{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:37:07.123000",
     "start_time": "2016-09-12T22:37:07.114000"
    },
    "collapsed": true
   },
   "source": [
    "# Logistic Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们将建立一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员，你想根据两次考试的结果来决定每个申请人的录取机会。你有以前的申请人的历史数据，你可以用它作为逻辑回归的训练集。对于每一个培训例子，你有两个考试的申请人的分数和录取决定。为了做到这一点，我们将建立一个分类模型，根据考试成绩估计入学概率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:41:59.715000",
     "start_time": "2016-09-12T22:41:52.726000"
    }
   },
   "outputs": [],
   "source": [
    "#三大件\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:43:37.650000",
     "start_time": "2016-09-12T22:43:37.635000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam 1</th>\n",
       "      <th>Exam 2</th>\n",
       "      <th>Admitted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Exam 1     Exam 2  Admitted\n",
       "0  34.623660  78.024693         0\n",
       "1  30.286711  43.894998         0\n",
       "2  35.847409  72.902198         0\n",
       "3  60.182599  86.308552         1\n",
       "4  79.032736  75.344376         1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "path = 'data' + os.sep + 'LogiReg_data.txt'\n",
    "pdData = pd.read_csv(path, header=None, names=['Exam 1', 'Exam 2', 'Admitted'])\n",
    "pdData.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:41:59.785000",
     "start_time": "2016-09-12T22:41:59.776000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 3)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pdData.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.260000",
     "start_time": "2016-09-12T22:41:59.790000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Exam 2 Score')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmcAAAFACAYAAAD589sCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xt8XXWZ7/HPUxoo2CIUgwdpSytTBYS2QGhBGQSKCCMIjjcQQ0HGRg/UUMUMExhQp+3R6mtiizNSxlo6tRakcjtnvGER6yAGUiy3FmTQNqmtNJQWqNxa8pw/1lrZaUh2drIv67K/79drv1bWyt7Zv6x9e/bv8jzm7oiIiIhIMgyLuwEiIiIikqPgTERERCRBFJyJiIiIJIiCMxEREZEEUXAmIiIikiAKzkREREQSRMGZiIiISIIoOBMRERFJEAVnIiIiIgkyPO4GFONtb3ubjx8/Pu5miIiIiAxozZo1z7l77UDXS3VwNn78eNra2uJuhoiIiMiAzGxjIdfTsKaIiIhIgig4ExEREUkQBWciIiIiCZLqOWciIiLVbteuXWzatIlXX3017qZIaMSIEYwZM4aampoh3V7BmYiISIpt2rSJUaNGMX78eMws7uZUPXdn27ZtbNq0iQkTJgzpb5RtWNPMvm9mW83s8R7HRpvZPWb2dLg9MDxuZrbQzP7HzB41s+PK1S4REZEsefXVVznooIMUmCWEmXHQQQcV1ZNZzjlnNwNn9Tp2NbDK3ScCq8J9gLOBieFlJvDdMrZLREQkUxSYJUuxj0fZgjN3Xw083+vwecDS8OelwPk9jv+nB34HHGBmh5SrbSIiIiJJVenVmm939y0A4fbg8PihQEeP620Kj72Jmc00szYza+vs7CxrY0VERKQwd9xxB2bGk08+2efvL7nkElauXFnw39u8eTMf+9jHAFi7di0/+clPun9333338dvf/nbQbRw/fjzPPffcoG9XaUlJpdFX/5/3dUV3v8nd69y9rrZ2wAoI6dPeDnPngof/vnuw394eb7tERCQTOjpg1iyYOjXYdnQMfJtCrFixgpNPPplbbrmlJH/vHe94R3cwV6rgLC0qHZw9Gw1Xhtut4fFNwNge1xsDbK5w25Jh2TK49lqYPTsIzGbPDvaXLYu7ZSIiknIdHTB5MixaBA89FGwnTy4+QNu5cyf3338/ixcv7g7O3J0rrriCo446ig996ENs3bq1+/rjx4+nubmZk046ibq6Oh5++GE++MEPcvjhh3PjjTcCsGHDBo4++mhef/11rrvuOm699VamTJnCN77xDW688UZaWlqYMmUKv/nNb+js7OSjH/0oJ5xwAieccAL3338/ANu2bePMM8/k2GOPpaGhAfc++30Sp9KpNO4GZgBfD7d39Th+hZndAkwDXoiGP6tOczN0dsKCBcEFoLExOC4iIlKE+fNh507YtSvY37Ur2J8/H264Yeh/98477+Sss87iXe96F6NHj+bhhx9mw4YNPPXUUzz22GM8++yzHHXUUXzmM5/pvs3YsWN54IEHmD17Npdccgn3338/r776Ku95z3v43Oc+1329vffem6997Wu0tbXxne98B4BXXnmFkSNHctVVVwHwqU99itmzZ3PyySfT3t7OBz/4QdavX89Xv/pVTj75ZK677jr+67/+i5tuumno/2QFlS04M7MVwKnA28xsE3A9QVD2IzO7DGgHPh5e/SfA3wH/A7wMXFqudiWeGbS05AIzCPa1EkdERIrU2poLzCK7dsGDDxb3d1esWMGVV14JwAUXXMCKFSvYtWsXF154IXvttRfveMc7OP300/e4zYc//GEAjjnmGHbu3MmoUaMYNWoUI0aMYMeOHYO6/1/+8pesW7eue//FF1/kpZdeYvXq1dx+++0AfOhDH+LAAw8s5t+smLIFZ+5+YT+/mt7HdR24vFxtSZVoKLOn2bMVoImISNGmTYO1a/cM0GpqgvlnQ7Vt2zbuvfdeHn/8ccyMN954AzPjIx/5SN6UEvvssw8Aw4YN6/452t+9e/eg2tDV1cUDDzzAvvvu+6bfpTHNSFIWBEhk3ryg16yxEbq6gu2CBcHxFCjXRFORaqHXkJRTUxOMHBkEZBBsR44Mjg/VypUrufjii9m4cSMbNmygo6ODCRMmMHr0aG655RbeeOMNtmzZwq9+9ash38eoUaN46aWX+t0/88wzu4c8IVhAAHDKKaewfPlyAH7605+yffv2IbehkhScJU19PcyZk+spa2kJ9uvr427ZgMo10VSkWug1JOU2diw88gg0NARfABoagv2xYwe+bX9WrFjBRz7ykT2OffSjH+Uvf/kLEydO5JhjjuHzn/8873//+4d8H6eddhrr1q1jypQp3HrrrZx77rnccccd3QsCFi5cSFtbG5MmTeKoo47qXlRw/fXXs3r1ao477jh+8YtfMG7cuKH/oxVkaVm50Je6ujpva2uLuxkSmjUr+DDp3V3e0FDcRFORaqHXkAzF+vXrOfLII+NuhvTS1+NiZmvcvW6g26rnTEqmXBNNRfqTtSFAvYb2lLXHV6RQlU6lIRlWjommIh0dwTL/1tbgOdbUFAzBREOAUVqAtWth+fLih2jipNdQThYfX5FCqedMSqYcE02luuWbg5UvX1NalfM1lLZeqCw+viKFUs+ZlEw00XT+/GAYZurUXC+HyFDk+4DO4hBguV5DaeyFyuLjK1Io9ZxVSpXUzBw7Npi43NoabJP6xi/pkO8Detq0XA9TJAtDgOV4DaWxFyqrj69IIRScVYpqZooMWr4PaA2jFy6NvVB6fKWaKTirlObmXELZYcNyiWZVM1OkX/k+oMuRrymr0tgLpcc3XcyML33pS9373/rWt/jKV76S9zZ33nnnHiWX+jJ58mQuvLC/gkO54uiDcd111/HLX/4SgG9/+9u8/PLL3b+bN4SE7zfffDNXXHHFoG+Xj4KzSokSyvakkkwieQ30Aa1h9MKktRdKj28ZlGmKzT777MPtt9/Oc889V/BtBgrO1q9fT1dXF6tXr+avf/1rUe3r6Wtf+xpnnHEGUJrgrBwUnFVKfzUzU5wEWKQS9AFdPPVCSbcyTbEZPnw4M2fOpKV3JwSwceNGpk+fzqRJk5g+fTrt7e389re/5e677+bLX/4yU6ZM4ZlnnnnT7X74wx9SX1/PmWeeyd133919fM2aNUyePJmTTjqJf/u3f+s+fvPNN3P++edz7rnnMmHCBL7zne/wr//6rxx77LGceOKJPP/88wBccsklrFy5koULF7J582ZOO+00TjvtNK6++mpeeeUVpkyZwkUXXQTAD37wA6ZOncqUKVNoaGjgjTfeAGDJkiW8613v4v3vfz/3339/UeeuT+6e2svxxx/vqTFnjju4Nza6d3UFWwiOi4iIDNG6desKv3LPz5/oEn0uFeEtb3mLv/DCC37YYYf5jh07/Jvf/KZff/317u5+zjnn+M033+zu7osXL/bzzjvP3d1nzJjht912W79/c+LEib5hwwb/+c9/7ueee2738WOOOcbvu+8+d3e/6qqr/D3veY+7uy9ZssQPP/xwf/HFF33r1q2+//77+3e/+113d7/yyiu9paXlTfd72GGHeWdn5x7/R2TdunV+zjnn+Ouvv+7u7p///Od96dKlvnnzZh87dqxv3brVX3vtNX/ve9/rl19++Zva39fjArR5AfGNUmlUSlQbs7k5N8RZW5uKmpkiIpIR0efPggW5YyWaYrP//vtz8cUXs3DhQvbdd9/u4w888AC33347APX19TQVMJ7+0EMPUVtby2GHHcaYMWP4zGc+w/bt2xk2bBg7duzortNZX1/PT3/60+7bnXbaaYwaNYpRo0bx1re+lXPPPReAY445hkcffXRQ/8+qVatYs2YNJ5xwAgCvvPIKBx98MK2trZx66qnU1tYC8MlPfpI//OEPg/rbA9GwZqWMGwfXXJN7AZgF+ykpwioiIhlQ5ik2V155JYsXL847R8wKCARXrFjBk08+yfjx4zn88MN58cUX+fGPf4y75739Pvvs0/3zsGHDuveHDRvG7t27B/GfBCOLM2bMYO3ataxdu5annnqqe5FDIf9DMRSciYiIVIt583LZArq6clkESjQRfvTo0XziE59g8eLF3cfe+973cssttwCwfPlyTj75ZABGjRrFSy+99Ka/0dXVxW233cajjz7Khg0b2LBhA3fddRcrVqzggAMO4K1vfSv//d//3f33itG7DTU1NewK885Mnz6dlStXsnXrVgCef/55Nm7cyLRp07jvvvvYtm0bu3bt4rbbbiuqDX1RcCYiIlIt6uthzpzcUGZLS7Bfwik2X/rSl/ZYtblw4UKWLFnCpEmTWLZsGQvCIdULLriAb37zmxx77LF7LAhYvXo1hx56KIceemj3sVNOOYV169axZcsWlixZwuWXX85JJ520x/DpUMycOZOzzz6b0047rXt/0qRJXHTRRRx11FHMmTOHM888k0mTJvGBD3yALVu2cMghh/CVr3yFk046iTPOOIPjjjuuqDb0xTzFqwXr6uq8ra0t7maIiFRcfwXhpfqsX7+eI488Mu5mSC99PS5mtsbd6wa6rRYEiIikTBprZYpI4TSsKSKSMmmslSkihVNwJiKSMmmslVkJHR0wa1aQaHfWrGC/WqR5ilIWFft4aFhTRCRlpk0LhjJ7BmhJr5VZbtU81DtixAi2bdvGQQcdVPYUDzIwd2fbtm2MGDFiyH9DwZmISMo0NQWBRxSIpKVWZjnlG+q94YZ421ZuY8aMYdOmTXR2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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "positive = pdData[pdData['Admitted'] == 1] # returns the subset of rows such Admitted = 1, i.e. the set of *positive* examples\n",
    "negative = pdData[pdData['Admitted'] == 0] # returns the subset of rows such Admitted = 0, i.e. the set of *negative* examples\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(10,5))\n",
    "ax.scatter(positive['Exam 1'], positive['Exam 2'], s=30, c='b', marker='o', label='Admitted')\n",
    "ax.scatter(negative['Exam 1'], negative['Exam 2'], s=30, c='r', marker='x', label='Not Admitted')\n",
    "ax.legend()#显示label\n",
    "ax.set_xlabel('Exam 1 Score')\n",
    "ax.set_ylabel('Exam 2 Score')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The logistic regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "目标：建立分类器（求解出三个参数 $\\theta_0         \\theta_1         \\theta_2 $）\n",
    "\n",
    "\n",
    "设定阈值，根据阈值判断录取结果\n",
    "\n",
    "### 要完成的模块\n",
    "-  `sigmoid` : 映射到概率的函数\n",
    "\n",
    "-  `model` : 返回预测结果值\n",
    "\n",
    "-  `cost` : 根据参数计算损失\n",
    "\n",
    "-  `gradient` : 计算每个参数的梯度方向\n",
    "\n",
    "-  `descent` : 进行参数更新\n",
    "\n",
    "-  `accuracy`: 计算精度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  `sigmoid` 函数\n",
    "\n",
    "$$\n",
    "g(z) = \\frac{1}{1+e^{-z}}   \n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.268000",
     "start_time": "2016-09-12T22:42:00.263000"
    }
   },
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.574000",
     "start_time": "2016-09-12T22:42:00.270000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f0616376be0>]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "nums = np.arange(-10, 10, step=1) #creates a vector containing 20 equally spaced values from -10 to 10\n",
    "fig, ax = plt.subplots(figsize=(12,4))\n",
    "ax.plot(nums, sigmoid(nums), 'r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sigmoid\n",
    "* $g:\\mathbb{R} \\to [0,1]$\n",
    "* $g(0)=0.5$\n",
    "* $g(- \\infty)=0$\n",
    "* $g(+ \\infty)=1$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.581000",
     "start_time": "2016-09-12T22:42:00.576000"
    }
   },
   "outputs": [],
   "source": [
    "def model(X, theta):\n",
    "    \n",
    "    return sigmoid(np.dot(X, theta.T))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\begin{array}{ccc}\n",
    "\\begin{pmatrix}\\theta_{0} & \\theta_{1} & \\theta_{2}\\end{pmatrix} & \\times & \\begin{pmatrix}1\\\\\n",
    "x_{1}\\\\\n",
    "x_{2}\n",
    "\\end{pmatrix}\\end{array}=\\theta_{0}+\\theta_{1}x_{1}+\\theta_{2}x_{2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.649000",
     "start_time": "2016-09-12T22:42:00.586000"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/arthur/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:6: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "\n",
    "pdData.insert(0, 'Ones', 1) # in a try / except structure so as not to return an error if the block si executed several times\n",
    "\n",
    "\n",
    "# set X (training data) and y (target variable)\n",
    "orig_data = pdData.as_matrix() # convert the Pandas representation of the data to an array useful for further computations\n",
    "cols = orig_data.shape[1]\n",
    "X = orig_data[:,0:cols-1]\n",
    "y = orig_data[:,cols-1:cols]\n",
    "\n",
    "# convert to numpy arrays and initalize the parameter array theta\n",
    "#X = np.matrix(X.values)\n",
    "#y = np.matrix(data.iloc[:,3:4].values) #np.array(y.values)\n",
    "theta = np.zeros([1, 3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        , 34.62365962, 78.02469282],\n",
       "       [ 1.        , 30.28671077, 43.89499752],\n",
       "       [ 1.        , 35.84740877, 72.90219803],\n",
       "       [ 1.        , 60.18259939, 86.3085521 ],\n",
       "       [ 1.        , 79.03273605, 75.34437644]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.],\n",
       "       [0.],\n",
       "       [0.],\n",
       "       [1.],\n",
       "       [1.]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0.]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.683000",
     "start_time": "2016-09-12T22:42:00.652000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((100, 3), (100, 1), (1, 3))"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape, y.shape, theta.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 损失函数\n",
    "将对数似然函数去负号\n",
    "\n",
    "$$\n",
    "D(h_\\theta(x), y) = -y\\log(h_\\theta(x)) - (1-y)\\log(1-h_\\theta(x))\n",
    "$$\n",
    "求平均损失\n",
    "$$\n",
    "J(\\theta)=\\frac{1}{n}\\sum_{i=1}^{n} D(h_\\theta(x_i), y_i)\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.712000",
     "start_time": "2016-09-12T22:42:00.686000"
    }
   },
   "outputs": [],
   "source": [
    "def cost(X, y, theta):\n",
    "    left = np.multiply(-y, np.log(model(X, theta)))\n",
    "    right = np.multiply(1 - y, np.log(1 - model(X, theta)))\n",
    "    return np.sum(left - right) / (len(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.743000",
     "start_time": "2016-09-12T22:42:00.714000"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6931471805599453"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost(X, y, theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算梯度\n",
    "\n",
    "\n",
    "$$\n",
    "\\frac{\\partial J}{\\partial \\theta_j}=-\\frac{1}{m}\\sum_{i=1}^n (y_i - h_\\theta (x_i))x_{ij}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.769000",
     "start_time": "2016-09-12T22:42:00.747000"
    }
   },
   "outputs": [],
   "source": [
    "def gradient(X, y, theta):\n",
    "    grad = np.zeros(theta.shape)\n",
    "    error = (model(X, theta)- y).ravel()\n",
    "    for j in range(len(theta.ravel())): #for each parmeter\n",
    "        term = np.multiply(error, X[:,j])\n",
    "        grad[0, j] = np.sum(term) / len(X)\n",
    "    \n",
    "    return grad"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "比较3中不同梯度下降方法\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.830000",
     "start_time": "2016-09-12T22:42:00.804000"
    }
   },
   "outputs": [],
   "source": [
    "STOP_ITER = 0\n",
    "STOP_COST = 1\n",
    "STOP_GRAD = 2\n",
    "\n",
    "def stopCriterion(type, value, threshold):\n",
    "    #设定三种不同的停止策略\n",
    "    if type == STOP_ITER:        return value > threshold\n",
    "    elif type == STOP_COST:      return abs(value[-1]-value[-2]) < threshold\n",
    "    elif type == STOP_GRAD:      return np.linalg.norm(value) < threshold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.858000",
     "start_time": "2016-09-12T22:42:00.833000"
    }
   },
   "outputs": [],
   "source": [
    "import numpy.random\n",
    "#洗牌\n",
    "def shuffleData(data):\n",
    "    np.random.shuffle(data)\n",
    "    cols = data.shape[1]\n",
    "    X = data[:, 0:cols-1]\n",
    "    y = data[:, cols-1:]\n",
    "    return X, y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.918000",
     "start_time": "2016-09-12T22:42:00.862000"
    },
    "cell_style": "center"
   },
   "outputs": [],
   "source": [
    "import time\n",
    "\n",
    "def descent(data, theta, batchSize, stopType, thresh, alpha):\n",
    "    #梯度下降求解\n",
    "    \n",
    "    init_time = time.time()\n",
    "    i = 0 # 迭代次数\n",
    "    k = 0 # batch\n",
    "    X, y = shuffleData(data)\n",
    "    grad = np.zeros(theta.shape) # 计算的梯度\n",
    "    costs = [cost(X, y, theta)] # 损失值\n",
    "\n",
    "    \n",
    "    while True:\n",
    "        grad = gradient(X[k:k+batchSize], y[k:k+batchSize], theta)\n",
    "        k += batchSize #取batch数量个数据\n",
    "        if k >= n: \n",
    "            k = 0 \n",
    "            X, y = shuffleData(data) #重新洗牌\n",
    "        theta = theta - alpha*grad # 参数更新\n",
    "        costs.append(cost(X, y, theta)) # 计算新的损失\n",
    "        i += 1 \n",
    "\n",
    "        if stopType == STOP_ITER:       value = i\n",
    "        elif stopType == STOP_COST:     value = costs\n",
    "        elif stopType == STOP_GRAD:     value = grad\n",
    "        if stopCriterion(stopType, value, thresh): break\n",
    "    \n",
    "    return theta, i-1, costs, grad, time.time() - init_time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:00.951000",
     "start_time": "2016-09-12T22:42:00.922000"
    }
   },
   "outputs": [],
   "source": [
    "def runExpe(data, theta, batchSize, stopType, thresh, alpha):\n",
    "    #import pdb; pdb.set_trace();\n",
    "    theta, iter, costs, grad, dur = descent(data, theta, batchSize, stopType, thresh, alpha)\n",
    "    name = \"Original\" if (data[:,1]>2).sum() > 1 else \"Scaled\"\n",
    "    name += \" data - learning rate: {} - \".format(alpha)\n",
    "    if batchSize==n: strDescType = \"Gradient\"\n",
    "    elif batchSize==1:  strDescType = \"Stochastic\"\n",
    "    else: strDescType = \"Mini-batch ({})\".format(batchSize)\n",
    "    name += strDescType + \" descent - Stop: \"\n",
    "    if stopType == STOP_ITER: strStop = \"{} iterations\".format(thresh)\n",
    "    elif stopType == STOP_COST: strStop = \"costs change < {}\".format(thresh)\n",
    "    else: strStop = \"gradient norm < {}\".format(thresh)\n",
    "    name += strStop\n",
    "    print (\"***{}\\nTheta: {} - Iter: {} - Last cost: {:03.2f} - Duration: {:03.2f}s\".format(\n",
    "        name, theta, iter, costs[-1], dur))\n",
    "    fig, ax = plt.subplots(figsize=(12,4))\n",
    "    ax.plot(np.arange(len(costs)), costs, 'r')\n",
    "    ax.set_xlabel('Iterations')\n",
    "    ax.set_ylabel('Cost')\n",
    "    ax.set_title(name.upper() + ' - Error vs. Iteration')\n",
    "    return theta"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 不同的停止策略"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 设定迭代次数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:02.222000",
     "start_time": "2016-09-12T22:42:00.953000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 1e-06 - Gradient descent - Stop: 5000 iterations\n",
      "Theta: [[-0.00027127  0.00705232  0.00376711]] - Iter: 5000 - Last cost: 0.63 - Duration: 1.00s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.00027127,  0.00705232,  0.00376711]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtoAAAEWCAYAAABYLDBhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XmYHGW5/vHvTVaWQICELSCJkMEkEBCGBIhRFpeAAoKICcjiAoejoBx/ouBxAdxwVzSKyOEgCiI7qEDgKKCiQSbsSQiGsIUACSEBwpbt+f3xVkOl0zPTk5memum+P9dVV3fX+nS9VdVPvfVWtSICMzMzMzPrWusVHYCZmZmZWT1yom1mZmZmVgNOtM3MzMzMasCJtpmZmZlZDTjRNjMzMzOrASfaZmZmZmY14ETbzMzMzOqGpLdIWiapT9GxNFyiLel4SQ9IekXSM5J+IWlwbviZklZkBbRU0j8k7Z0bvq+k+WXzfI+kWyW9JGmxpHslfVHSwNw8f5sbP7IY1sv1+4aki8rmu2EWxw0Vvsdjkt5d5fddlc1nmaRHJf2vpKYK41ZcXm7aZZJWS3o19/nosmWFpCPbi6udmIdn8+lbYVi+fErd0rJxJGmepFkVpr9N0mvZdM9JulrS1mXzD0kfzvXrm/Ubnn2+SNI3ymL9U9lyfivpzNznQZJ+mJXby5KekHSlpHHtrIPSd3xM0umtjHubpCWSBuT63ZibdoWk5bnP52Xb8eqy9bgsv623RdLJklokvV5hu+3wvCUdJenxbN1cK2mzsuGTJc3Ohj8iaWI1cbayrP6SvippTja/p7L19d7cOI/ltvNnsjLfqMK8StvLuLL+7e535dt5tox8OS2TdF/ZuBW3M0lH56Z5tXz9t7IeIvv+y5SOW3+W9JGycfL7S6n7Q274l7LvtkzSfEm/L5v+fZL+qnRsXCTpdkmHtLKOSt02uTJ4VtKGufl9MovpLWXT5L/LsnXZPiQNlnRhVt4vSXpY6The1bIk7SPpL9m0L0j6g6TRufnn94uXsu3vY1XGVn48WCbpK7nhA7LYX8zi/1zZ9AdIekjpd+9WSdtXO23ZfI6X9PfsfZu/C2rnWF22Hp9SOj6ulRQp7RcrS9tF1u+83DyXly3nRlX4DamyfELS1LLl/13S8dn7/pJ+kG3rpf36R+0WYOvrs839qzfL1uWO2fs1cqAaLW+NnCginoiIjSJiVS2XW42GSrQl/T/gO8BpwCbAXsD2wC2S+udG/X1EbAQMAW4Frmhjnh8GrgQuBbaPiM2BjwDbAtu1Ec42wOR2Qj4CeB14r3LJ4Dr4Z/Z9NgHeDbwKzJC0czXLyzbWjbJ5PAEcnOt3SW7644Dns9da+n0+pogYXDb8ncAWwFsl7Vlh+pOz77IjsBHw/bLhzwNnVzrot2EvSRMqDVBKgP8C7AJ8ANgYGAVcBhzUznwHZ7EeAXxF0nvK5j0cmAgEcEipf0QcmCuzS4Dv5tbXSdloC8rW40YR8c8qv+8C4BvAha0Nr3beksYAvwSOAbYEXgF+nhv+HtJ++zFgEKl851UZZyVXAocCxwKbAiOAnwDvLxvv4Gz97Qa8HTijLG5lMbe2zVe73+V9t2yd7Vo2vOJ2FhGX5Mr7QMrWfxvL2zUbvhNwEfAzSV8rG+fkspgOzr7/cdn3f3c2j2bgz6WJJB1BOnZeTDoebgl8FTi4fB2VdQtyw/sCn63wfZ+o8P12zfX7WxvfuTU/Ih0PRpHK7BDgkWqWpXQSeTNwHenYPgK4D7hD0ltzy1iQzWNj4IvAr/LJXhUG55b79Vz/M4GRpN+z/YAvSJoEIGkIcDXwFWAzoAX4fTXTtqXK34X2jtWl7e9dpN/Nj+cHKp1kfQh4AXijUiciTsot+1tlyzmwPNYOlM/LwLHZcbWSM0jb+TjSsWg/4J621lMVKu5fFb5DpYqntfq1paPj9xS9Ne6Shkm0JW0MnAWcEhE3RcSKiHgMOJJ0gPlo+TQRsZKUpAyTNLTCPAX8EDg7In4VEc9n082JiFMi4t9thPRd4Kx2NqDjgPOA+8kdZNZVRKyKiEci4lPA7aQDbJcsL6sheRdwIvA+SVt2Nt5OOI50QL2BNpL+iFgKXEtKpPJuApZTYZtow3dJiWclx5ASjQ9GxINZObwcEVdGxJnVzDwiWoCZFWI9FphOSpJqfYKTj+fqiLgWWNwFszsa+ENE/DUilpESgsMlDcqGn0Xax6ZHxOqIeCoinlqXBWU1Hu8BDo2IOyNiedbdFBFrJXQAEfEMMI211/1E0o/2Z4HJZSfr+enb2+86oq3tbJ1FxHMR8RvgP4EzJG1exWR7AtMi4pFsHs9ExPmwxrHx6xFxQUS8kJXd7RFxQgdC+x7weeWuOtbQnsClEbEki/WhiLiyymm/C1wcET+JiJci4vmI+DJp3zyzfORIrgWWAB1JtFtzLGldL4mI2cCvgOOzYYcDMyPiioh4LYtnV0lvq2LabhERc4E7WHsf+xCwFDibzh3fqi2fpaRjafnJZsmewDURsSArw8ci4uJOxNWqrIZ9vtJVlWeA/63ULxv3BElzJT0v6fqy2v+Q9GlJ/wbWykkk3STp5LJ+90k6XMmPJC3MrgLc305FQaXvMQn4EvARrXmVbhNJ/yPpaaUrGt8oVW4pXTm5I1v288CZknbIrkgsVroafUnpuCDpN8BbgD9ky/iC1r5iuE22bp7P1tUJuRjPlHS5pIuVrnjMlNTcke/ZloZJtIF9gIGkM/s3ZD/sN5J+fNeQ/XAeS0omllSY506kBOqqdYjnauBFWjmgSXoLsC8p0b8ki6MrXU1KFLpqeccCLRFxFTCbLjgxWBeSNiDV/pa+R6sJUJZMHA7MLRsUpGTva5L6VbnoqUCTKjfneTcpIXm5ynlVinUvYOcKsR7Lm9+1y05wJJ0u6Y9dMa8qjCHVLgGQJW7LSeuzD6kGaWh2cJwv6WeS1l/HZb0buDMi5rc7ZkbStqRa4vJ1fxzwB96sHfxAFbNbY79bB21tZ13hOlItcsUmTWWmk2r/TpPUrDWvAO1EuqJXbaLamhbgNuDznZxPNaYD35T0MUkjq50oO+bsQ+Urn5dT+bdlPUmHAYOBB7J+90s6qp3FPZ7tA/+b1VQjaVPSCd99ufHuI+1XsPb+9TLwCDCmimm7RZb0T6TyPvY70tW/t0nafR3m3dHy+SbwIUk7VRh/OvA5SZ+StEt2QllLW5GuQmxPqsRaq5+k/YFvkyoNtwYeJ62vvA8C46l8UncpMKX0QekKy/bAn4D3kq4gNpG21Y/QwcqViLiJNa86lK7S/RpYSbqy/PZsWZ/MTTqedOVyC1KZKPue25CuOm1HdpIUEcew5lWV71YI5XfA/Gz6I4BvSTogN/wQ0nobDFwP/Kwj37MtjZRoDwGey2qpyz2dDS85Uqkt2avACcARrUxXmuaZUg9Jlym17X5F0jFtxFNK5r6qXNvanGOB+yNiFmkDGSPp7W3Mr6MWkHbWrlresaQdluy1lrWrR2bruNTdmht2OKn5y83AH0lJQ3mTgHMlvQA8RyrDU8oXEBHXA4tYc8dvy2ukg0Gl2sYhrLmN7JbF/aKkOe3M9zlJrwL/JDWnuDY3n3eQDoiXR8QM0o9nez/UeduUrcelytrDRsQ5EVFN4tjheVewEenScN4LpEuzWwL9SAfGibzZjOPL6xhXeVlslsX2gqTXysa9VtJLwJPAQnK1XNmP94dJNaArSAllNdt8+X5X7vNl6+zXZcPb2s46Lfsuz5XFeG5ZTF/Pxv0tad95H6mmfqHevI+gVCP+dDuL3Kts3o9UGOerwCmqcFWxi51COmE9GZiVndit1Qyhgs1Iv6WVvmv5b8s22W/Lc6Tt6ZiImAMQEWMj4tIK8yAbf0/S/r4Had8oNc8oNWfJ70Ol/ac0vLX9q71pO6utYzXA3ZJeJlXO3MaaTcbeQmqacWlEPEtqlrQuvysdKZ/SFazzSLXo5b5NasZ2NOkk8CmlJlSdUXH/yqwGvhYRr0fEq630Oxq4MCLujojXSc1b9taazV++ndXiv8rargF205vt9o8Grs7mtYK0LbwNUETMjoj29ul2ZRVCBwKnZld3F5KabuWb0y6IiJ9GxMqIeDUi5kbELdn3XkS6YvauKpe3HfAO4IsR8VpE3AtcQLraXPL3iLghUpvu3wDlzfbWWSMl2s8BQ1S5qcbW2fCSyyO1JdsSeJB0YKukdGaXb888OZv2bqDNNr4RcQPpLOzECoNLNZVEarN4O12bvA4jtS3t9PKU2oyO4M2z6EuBXSSVXwYsjT9Tnbhpiax8ct1+uWHHZcNXZgeKqyt8j89ExCbAWFIb3W1bWc6Xgf8mXQmpxq+ALSWVt7FbzJrbyL3ZNnI4UOkkK28I6cfw86QrDvka9uOAmyOitO129ARnQdl6HNyZWvdq5i1pYq7sZ2bjLiO1Wc3bGHiJdLIL8NOIeDr7rj+klbbtVWxb5WXxfFYWe7B2WXwwIgaR1vvbWPMH+TBSbUzpxuFLgAOrSAbL97ty3y9bZ5XKs7XtrNOyKzhDy2L8TFlMb9yEF6lt+LtJtUAnke5teB8Vjo2tmF427x3KR4iIB0knzRVvBq7ye1Xa7sqX82pEfCsi9iCdKFwOXKGyG3MrWEJKfip91/LfltJ+sVlE7BYR5TWPFUXEsohoyY5rz5JOBt6r1CSydLNrfh8q7T/Q9v7V3rSd1daxGmB30vHtI6QazPzJ+DHA7CwpgrSPHaXqrzKWdKR8Sr5DukK4RrIVqRnY1IiYQNrmvwlcKGlU+QyUbhR+4wb0NuJrdf8CFkVq7kMb/bYh1WKXYlxG2v+G5cZ5srWFR8RLpNrrUpI7mTdzgb+QananAs9KOj/b5jpre9Jv2dOlEwzSfTpbtBazpC2yisynJL0I/Jayk6Q2bAM8n33XksdZcx09k3v/CjCwlXyxwxop0f4nqabz8HzPrJbtQHI38ZRkP+r/QWofVGknfQh4qnyeHVRK5jbIxbQP6eaUM5TuAn+GdBCa0lUFT0oU/tZFyzuOdFnn3mzaO7P+FZufRMSY6NxNSxUpXeLfH/ho7nscARyk7DJrWRwPkGoGp0prXwKMiFtIlzI/Vc3ys9rAs4Cvk9ZHyZ9JP4qt1ei2N99VEfEDUm3mpwCUmk4cCbwr913/i9T2ssvOxLtaRPwtV/aly9MzydUeKN2cNAB4OCKWkC73RZXzb2/b+jOwZ7atVBvz7aR2m/mbZo8jJQhPZOv+CtIPx5S1ZrCmN/a7ddXGdtYVDiWdQPyrozFFxBWk+zt2BuaQfig/1EVxfY10dXFYeyO2El+l7a6t8V8kXe7ekFSJ0Na4L5N+Xz5cYfCRVPht6QKl/UHZPvI0a9bA7Urar2Dt/WtDYAdSu+32pq25SC4nrcOv5gYdS7qhvXR8+yEpsarmKkN+/h0un4hYDPyYtI+1Nt9XI2IqrbSzz07aym9A76hKx73yfgtIiSvwRvluTspN2ppP3u9Iv/d7A+uTHgKRJow4Nzv5HENqQnJa1dG3vvwnSfnYkNwJxsZl+2b5NN/O+o2NiI1J91CpjfHzFgCb6c37fiC16V6ne306qmES7Yh4gfTj9FNJkyT1yy6tXEH6If9NK9M9RLoR6gsVhgXw/0hteU+QtKmSkaTa8Griuo3URi9fc3UccAtp590t63YmJeP5g0w/SQNzXZtJsaQ+kkZI+implu6sDi6v0jwHkg5WJ+am3Y10GfboTp4YDCj7fu1tr8cAD5Pah5biaCKVb2sJ0K9JZ9GHtDL8v6lQ9m34DSlJzN+1fzHpx+waSTtn5TCQ1Pa4I84hPRFgIKnN3SrWLLNRpCSuq9vzr0XpkYcDSVdt+lSz/bXhEuDgrNZxQ9Il26tztQ//S2o6sIVSm9JTSTWcHRYRN5N+RK6VNF7pcV39SE8gasuPgfcoNfsZBhxAapNdWve7kmrB1qqBbmO/64xK29k6U2pCczSp5uo7WaLR3jTHS3q/0qMr11NqZjGG1AY+gM+RnpTzMUkbZ+O8Q9L5HY0v0s1yvwc+09FpqyXpK5L2zLaJgaSbXJeSThraczpwnKTPZOtjU6VHgO5NF5R3tq3ulK3DzYFzgduy3zVIx5gvZ8t9G+mk5KJs2DXAzpI+lH2vr5KaCT5UxbTd6RxSm+OtsoRvB9K9AvnfpHVtlrgu5fNDUtvuN2qrJZ2qdEPi+tkx8DhS04rOPnmkMy4FPpYdmwaQThDvjPSwh2rdQErWzya1pV4NkO0P47Nj5Mukyp51eVzes8Dw0m94pOYnNwM/yB0bdpDUVlOQQaQrMEuzY3B5wv8s8Na1pkrLexL4B/Dt7LdqLPAJ3mx+VVsR0VBdtnIfJF2SfpZ0uWLT3PAzgd+WTTOetJFtQfqhnF82fBKpqUXpks09pI1gw0rzJJ157Vg2/yAd3AaSzpAPrhD7z4Ers/ePZdPku29UmOZ40o6xLPsOj5OSy1HZ8KqWl+v3GOlxXqXPk0lJZL+y8QaSLsl9YB3KaHiF7xakG9nOJLUbW1bWbUG6wnBKhfl9gXSjJqR2gJ8sG/7F3PBK5X9Dtvzh2eeLSus6F2vf3PhHZv3OzPXbhJSsPZ4rh6uAce2sg/x8RappOoX0ZJQfVJjuSNIlsPx0b8Sb67cv6XJq+Xr8UDb8S8CNbZTRmRXK58xq5t3K/I4iNaN6mXRD3ma5Yf2ybXFp9t3OBQZ24hgwIIv/36RLhPNJN0S/r7XtPOv3i6zMTgdmVJjvNtm2uTPt7HeVyjgrp+Vl6+y5jmxnufU/v4r1EFlsy0hNRW4Fjiob5zbSj2s+phnZsMNJT4pYQrqx+wHg+LLpJ5FO/paR7nm4DXh/hWNTvtuzlWPNdlkst7XyXXZs7zu3sz6+TPpteDFbH7cB+1S7LFIb0Nuy7/Ai6XL8ztWWC2nfPrqVYVOAR7PyepqUHG9Vtk1fmC33WeBzZdO/m3R8fDWLcXi105bN53hSW9by/muUVe4YUfFY3dp6JO2HPyC1kb6qwnLGkWpCNytbTvkxezhr7y8dLh/Sb0eQbdekK9wzSO3Yl5Ku/HT4N67K/atSPBW3IVKzrUey7faPwLYd3TeA/8nG3TPX7wDSVaplpN/zS4CNsmHt/Ua8sVxSDfvfSceKu7N+m5COqfOz9XkPMLm17Yx0Ej8ji+VeUiXn/NzwQ0m/IUtJTS3X2AZITUT/mK2jR4CTWtuGKm0/nemUzdTMzMzMzLpQwzQdMTMzMzPrTk60zczMzMxqwIm2mZmZmVkNONE2MzMzM6uBrnomc+GGDBkSw4cPLzoMMzMzM6tzM2bMeC4i2v3H2rpJtIcPH05LS0vRYZiZmZlZnZP0ePtjuemImZmZmVlNONE2MzMzM6sBJ9pmZmZmZjXgRNvMzMzMrAacaJuZmZmZ1YATbTMzMzOzGnCibWZmZmZWA060O+vHP4Yrryw6CjMzMzPrYZxod9b558MllxQdhZmZmZn1ME60O6upCR5+uOgozMzMzKyHcaLdWU1NMHcurFpVdCRmZmZm1oM40e6spiZYvhyeeKLoSMzMzMysB3Gi3VlNTenVzUfMzMzMLMeJdmc50TYzMzOzCpxod9aWW8KgQU60zczMzGwNNU20JU2SNEfSXEmntzLOkZJmSZop6dJc/+9IejDrPlLLODtFgp12cqJtZmZmZmvoW6sZS+oDTAXeA8wH7pJ0fUTMyo0zEjgDmBARSyRtkfV/P7A7sBswALhd0o0R8WKt4u2Upib4xz+KjsLMzMzMepBa1miPA+ZGxLyIWA5cBhxaNs4JwNSIWAIQEQuz/qOB2yNiZUS8DNwHTKphrJ3T1ASPPw6vvVZ0JGZmZmbWQ9Qy0R4GPJn7PD/rl9cENEm6Q9J0SaVk+j7gQEkbSBoC7AdsV74ASSdKapHUsmjRohp8hSo1NUEEPPJIcTGYmZmZWY9Sy0RbFfpF2ee+wEhgX2AKcIGkwRFxM3AD8A/gd8A/gZVrzSzi/IhojojmoUOHdmXsHeMnj5iZmZlZmVom2vNZsxZ6W2BBhXGui4gVEfEoMIeUeBMR34yI3SLiPaSk/d81jLVzRo5Mr060zczMzCxTy0T7LmCkpBGS+gOTgevLxrmW1CyErIlIEzBPUh9Jm2f9xwJjgZtrGGvnbLwxbLWVE20zMzMze0PNnjoSESslnQxMA/oAF0bETElnAy0RcX027L2SZgGrgNMiYrGkgcDfJAG8CHw0ItZqOtKjNDU50TYzMzOzN9Qs0QaIiBtIba3z/b6aex/A57IuP85rpCeP9B5NTXB9eYW9mZmZmTUq/zNkV2lqgoULYenSoiMxMzMzsx7AiXZX8ZNHzMzMzCzHiXZXGTUqvc6eXWwcZmZmZtYjONHuKm99K/TvD7NmtT+umZmZmdU9J9pdpW9f2GknJ9pmZmZmBjjR7lqjRzvRNjMzMzPAiXbXGjUKHn0UXn216EjMzMzMrGBOtLvS6NEQAXPmFB2JmZmZmRXMiXZXGp39x46bj5iZmZk1PCfaXWnkSOjTx4m2mZmZmTnR7lL9+8OOOzrRNjMzMzMn2l3OTx4xMzMzM5xod73Ro2HuXFi+vOhIzMzMzKxATrS72ujRsGoV/PvfRUdiZmZmZgVyot3VRo1Kr24+YmZmZtbQnGh3tZ12AsmJtpmZmVmDc6Ld1TbYAEaMcKJtZmZm1uCcaNfCmDHw4INFR2FmZmZmBXKiXQtjx6a/YX/ttaIjMTMzM7OCONGuhbFj05NHZs8uOhIzMzMzK4gT7VoYOza93n9/sXGYmZmZWWGcaNfCjjvCwIFOtM3MzMwamBPtWujbN90Q+cADRUdiZmZmZgWpaaItaZKkOZLmSjq9lXGOlDRL0kxJl+b6fzfrN1vSuZJUy1i73NixrtE2MzMza2A1S7Ql9QGmAgcCo4EpkkaXjTMSOAOYEBFjgFOz/vsAE4CxwM7AnsC7ahVrTYwdC88+mzozMzMzazi1rNEeB8yNiHkRsRy4DDi0bJwTgKkRsQQgIhZm/QMYCPQHBgD9gN6VsZZuiHTzETMzM7OGVMtEexjwZO7z/KxfXhPQJOkOSdMlTQKIiH8CtwJPZ920iFjrWXmSTpTUIqll0aJFNfkS62yXXdKrm4+YmZmZNaRaJtqV2lRH2ee+wEhgX2AKcIGkwZJ2BEYB25KS8/0lvXOtmUWcHxHNEdE8dOjQLg2+04YOha23dqJtZmZm1qBqmWjPB7bLfd4WWFBhnOsiYkVEPArMISXehwHTI2JZRCwDbgT2qmGsteEbIs3MzMwaVi0T7buAkZJGSOoPTAauLxvnWmA/AElDSE1J5gFPAO+S1FdSP9KNkL3vbxbHjoWZM2HlyqIjMTMzM7NuVrNEOyJWAicD00hJ8uURMVPS2ZIOyUabBiyWNIvUJvu0iFgMXAk8AjwA3AfcFxF/qFWsNTN2LCxfDg8/XHQkZmZmZtbN+tZy5hFxA3BDWb+v5t4H8Lmsy4+zCviPWsbWLUpPHrnnHhg9uu1xzczMzKyu+J8ha2nUKBgwICXaZmZmZtZQnGjXUr9+qVZ7xoyiIzEzMzOzbuZEu9b22APuvhtWry46EjMzMzPrRk60a22PPeDFF2HevKIjMTMzM7Nu5ES71nbfPb3efXexcZiZmZlZt3KiXWs775zaarudtpmZmVlDcaJda/37wy67uEbbzMzMrME40e4Oe+yRarQjio7EzMzMzLqJE+3usPvusGQJPP540ZGYmZmZWTdxot0d9tgjvbqdtpmZmVnDcKLdHXbZBfr2dTttMzMzswbiRLs7DBwIY8a4RtvMzMysgTjR7i577AEtLb4h0szMzKxBONHuLuPHw+LF8MgjRUdiZmZmZt3AiXZ32Wuv9HrnncXGYWZmZmbdwol2dxkzBjbcEKZPLzoSMzMzM+sGTrS7S58+sOeertE2MzMzaxBOtLvTXnvBPffAq68WHYmZmZmZ1ZgT7e40fjysXJmSbTMzMzOra060u9P48enVzUfMzMzM6p4T7e609daw/fa+IdLMzMysATjR7m7jx7tG28zMzKwB1DTRljRJ0hxJcyWd3so4R0qaJWmmpEuzfvtJujfXvSbpg7WMtdvstRc8/jg8/XTRkZiZmZlZDdUs0ZbUB5gKHAiMBqZIGl02zkjgDGBCRIwBTgWIiFsjYreI2A3YH3gFuLlWsXYrt9M2MzMzawi1rNEeB8yNiHkRsRy4DDi0bJwTgKkRsQQgIhZWmM8RwI0R8UoNY+0+u+8O/fvDHXcUHYmZmZmZ1VAtE+1hwJO5z/OzfnlNQJOkOyRNlzSpwnwmA7+rUYzdb+DA9Mc1f/tb0ZGYmZmZWQ3VMtFWhX5R9rkvMBLYF5gCXCBp8BszkLYGdgGmVVyAdKKkFkktixYt6pKgu8XEiTBjBrz8ctGRmJmZmVmN1DLRng9sl/u8LbCgwjjXRcSKiHgUmENKvEuOBK6JiBWVFhAR50dEc0Q0Dx06tAtDr7GJE9Mf17idtpmZmVndqmWifRcwUtIISf1JTUCuLxvnWmA/AElDSE1J5uWGT6Gemo2U7LMPSG4+YmZmZlbHapZoR8RK4GRSs4/ZwOURMVPS2ZIOyUabBiyWNAu4FTgtIhYDSBpOqhG/vVYxFmbwYBg71om2mZmZWR1TRHmz6d6pubk5Wlpaig6jeqecAhdeCEuXQr9+RUdjZmZmZlWSNCMimtsbz/8MWZSJE+GVV+Cee4qOxMzMzMxqwIl2USZOTK9uPmJmZmZWl5xoF2XrrWGHHZxom5mZmdUpJ9pFmjgR/v53WL266EjMzMzMrIs50S7SfvvB4sXwwANFR2JmZmZmXcyJdpEOOCC9/vnPxcZhZmZmZl3OiXaRhg2DnXZyom1mZmZWh5xoF+2AA+D222FFxX+ZNzMzM7Neyol20Q44AF5+Ge68s+hIzMzMzKwLOdEu2r77guTmI2ZmZmZ1xol20TbbDHbf3Ym2mZmZWZ1xot0THHAATJ+empCYmZmZWV2oKtGW9Jtq+tk6OuCAdDOk/yXSzMzMrG5UW6M9Jv9BUh9gj64Pp0G94x3Qvz/cckvRkZiZmZlZF2kz0ZZ0hqSXgLGSXsy6l4CFwHXdEmEj2GADeOc74cYbi463Pt9bAAAZgUlEQVTEzMzMzLpIm4l2RHw7IgYB34uIjbNuUERsHhFndFOMjeGgg2D2bHjssaIjMTMzM7MuUG3TkT9K2hBA0kcl/VDS9jWMq/EcdFB6da22mZmZWV2oNtH+BfCKpF2BLwCPAxfXLKpG1NQEI0bADTcUHYmZmZmZdYFqE+2VERHAocBPIuInwKDahdWApFSr/Ze/wGuvFR2NmZmZmXVStYn2S5LOAI4B/pQ9daRf7cJqUAcdBK+8An/9a9GRmJmZmVknVZtofwR4Hfh4RDwDDAO+V7OoGtW++8KAAW4+YmZmZlYHqkq0s+T6EmATSR8AXosIt9HuahtsAPvt5xsizczMzOpAtf8MeSTwL+DDwJHAnZKOqGVgDeugg+Dhh1NnZmZmZr1WtU1H/hvYMyKOi4hjgXHAV9qbSNIkSXMkzZV0eivjHClplqSZki7N9X+LpJslzc6GD68y1t7tkEPS67XXFhuHmZmZmXVKtYn2ehGxMPd5cXvTZjdMTgUOBEYDUySNLhtnJHAGMCEixgCn5gZfTPqjnFGkxD6//Pq1/faw++5wzTVFR2JmZmZmnVBton2TpGmSjpd0PPAnoL079sYBcyNiXkQsBy4jPR4w7wRgakQsASgl81lC3jcibsn6L4uIV6qMtfc77DCYPh0WLCg6EjMzMzNbR+3VSu8oaUJEnAb8EhgL7Ar8Ezi/nXkPA57MfZ6f9ctrApok3SFpuqRJuf5LJV0t6R5J38tqyMvjO1FSi6SWRYsWtRNOL3LYYen1uuuKjcPMzMzM1ll7Ndo/Bl4CiIirI+JzEfFfpNrsH7czrSr0i7LPfYGRwL7AFOACSYOz/hOBzwN7Am8Fjl9rZhHnR0RzRDQPHTq0nXB6kdGjYeRINx8xMzMz68XaS7SHR8T95T0jogUY3s6084Htcp+3BcrbQswHrouIFRHxKDCHlHjPB+7Jmp2sBK4Fdm9nefVDSrXat94KS5YUHY2ZmZmZrYP2Eu2BbQxbv51p7wJGShohqT8wGbi+bJxrgf0AJA0hNRmZl027qaRSNfX+wKx2lldfDjsMVq6EP/2p6EjMzMzMbB20l2jfJemE8p6SPgHMaGvCrCb6ZGAaMBu4PCJmSjpbUvYMO6YBiyXNAm4FTouIxRGxitRs5M+SHiA1Q/lVR75YrzduHGyzDVx1VdGRmJmZmdk6UER5s+ncQGlL4BpgOW8m1s1Af+Cw7B8je4Tm5uZoaWkpOoyudeqpcN558OyzsMkmRUdjZmZmZoCkGRHR3N54bdZoR8SzEbEPcBbwWNadFRF796Qku25Nngyvv+6bIs3MzMx6ob7VjBQRt5Kadlh3Gj8eRoyAyy6D448vOhozMzMz64Bq/7DGiiClWu3/+z+op+eEm5mZmTUAJ9o93ZQpsGoVXHFF0ZGYmZmZWQc40e7pdt45/YHN735XdCRmZmZm1gFOtHs6KdVq//3v8MQTRUdjZmZmZlVyot0bHH10er344mLjMDMzM7OqOdHuDUaMgP32g4sugjaee25mZmZmPYcT7d7iYx+DRx6Bv/2t6EjMzMzMrApOtHuLD30IBg2CCy8sOhIzMzMzq4IT7d5igw3SM7WvuAJeeqnoaMzMzMysHU60e5OPfxxeeQUuv7zoSMzMzMysHU60e5Px42HUKLjggqIjMTMzM7N2ONHuTSQ48USYPh3uuafoaMzMzMysDU60e5vjj0/ttadOLToSMzMzM2uDE+3eZvDg9Ac2l14KS5YUHY2ZmZmZtcKJdm/0qU/Bq6+mP7AxMzMzsx7JiXZvtNtusM8+8POfw+rVRUdjZmZmZhU40e6tPv1pmDsXpk0rOhIzMzMzq8CJdm91xBEwbBh8//tFR2JmZmZmFTjR7q3694dTT4W//AVaWoqOxszMzMzKONHuzU48ETbeGL73vaIjMTMzM7MyTrR7s403hpNOgiuvhHnzio7GzMzMzHJqmmhLmiRpjqS5kk5vZZwjJc2SNFPSpbn+qyTdm3XX1zLOXu2zn4U+feCHPyw6EjMzMzPLqVmiLakPMBU4EBgNTJE0umyckcAZwISIGAOcmhv8akTslnWH1CrOXm+bbeCjH4ULL4Rnnik6GjMzMzPL1LJGexwwNyLmRcRy4DLg0LJxTgCmRsQSgIhYWMN46tcZZ8Dy5fDd7xYdiZmZmZllaploDwOezH2en/XLawKaJN0habqkSblhAyW1ZP0/WGkBkk7MxmlZtGhR10bfm4wcmWq1f/ELePrpoqMxMzMzM2qbaKtCvyj73BcYCewLTAEukDQ4G/aWiGgGjgJ+LGmHtWYWcX5ENEdE89ChQ7su8t7oK1+BFSvgnHOKjsTMzMzMqG2iPR/YLvd5W2BBhXGui4gVEfEoMIeUeBMRC7LXecBtwNtrGGvvt8MOcNxx8MtfwlNPFR2NmZmZWcOrZaJ9FzBS0ghJ/YHJQPnTQ64F9gOQNITUlGSepE0lDcj1nwDMqmGs9eHLX4ZVq+Cb3yw6EjMzM7OGV7NEOyJWAicD04DZwOURMVPS2ZJKTxGZBiyWNAu4FTgtIhYDo4AWSfdl/c+JCCfa7RkxAk44Ac4/H+bMKToaMzMzs4amiPJm071Tc3NztPivyGHhQthxR9hvP7juuqKjMTMzM6s7kmZk9xK2yf8MWW+22CI97u/66+G224qOxszMzKxhOdGuR6eeCttuC5//PKxeXXQ0ZmZmZg3JiXY9Wn99+Na3YMYMuPjioqMxMzMza0hOtOvV0UfD3nvDF74Azz9fdDRmZmZmDceJdr1ab730T5HPPw9f+lLR0ZiZmZk1HCfa9WzXXeEzn0mP+7vzzqKjMTMzM2soTrTr3VlnwTbbwEknpb9oNzMzM7Nu4US73g0aBOeeC/feC9/5TtHRmJmZmTUMJ9qN4PDDYfJkOPtsuO++oqMxMzMzawhOtBvFz34Gm28Oxx4Ly5cXHY2ZmZlZ3XOi3Sg23zzdFHn//alm28zMzMxqyol2Izn4YDj+ePj2t/337GZmZmY15kS70fz0pzByJBx1FCxcWHQ0ZmZmZnXLiXaj2WgjuPxyWLIEjjkGVq8uOiIzMzOzuuREuxGNHQs/+QncfDN861tFR2NmZmZWl5xoN6oTToCjj4avfhWuu67oaMzMzMzqjhPtRiXBr34Fzc0p4X7ggaIjMjMzM6srTrQb2frrwzXXwMYbwyGHwKJFRUdkZmZmVjecaDe6YcPg2mvhmWdSsv3yy0VHZGZmZlYXnGgbjBsHl14K//oXHHEErFhRdERmZmZmvZ4TbUsOOwx++Uu46Sb42Mf82D8zMzOzTupbdADWg3zyk+lPbP77v2HQIJg6FdbzuZiZmZnZuqhpFiVpkqQ5kuZKOr2VcY6UNEvSTEmXlg3bWNJTkn5Wyzgt54wz4ItfhPPOg5NOcs22mZmZ2TqqWY22pD7AVOA9wHzgLknXR8Ss3DgjgTOACRGxRNIWZbP5OnB7rWK0CiT49rehT5/0ZzarVqXHALpm28zMzKxDatl0ZBwwNyLmAUi6DDgUmJUb5wRgakQsAYiIhaUBkvYAtgRuApprGKeVk+Ab30jJ9te/Dq+8AhddBAMGFB2ZmZmZWa9Ry2rKYcCTuc/zs355TUCTpDskTZc0CUDSesAPgNPaWoCkEyW1SGpZ5GdAdy0Jzj4bzjkHLrsMJk2CpUuLjsrMzMys16hloq0K/aLsc19gJLAvMAW4QNJg4FPADRHxJG2IiPMjojkimocOHdoFIdtavvhF+M1v4I47YOJEeLLNIjEzMzOzTC0T7fnAdrnP2wILKoxzXUSsiIhHgTmkxHtv4GRJjwHfB46VdE4NY7W2fPSjcOON8PjjsOee8Le/FR2RmZmZWY9Xy0T7LmCkpBGS+gOTgevLxrkW2A9A0hBSU5J5EXF0RLwlIoYDnwcujoiKTy2xbnLAAfDPf6a/a99/f/jZzyDKL1CYmZmZWUnNEu2IWAmcDEwDZgOXR8RMSWdLOiQbbRqwWNIs4FbgtIhYXKuYrJPGjEn/HjlpEpxyChx7LLz0UtFRmZmZmfVIijqplWxubo6Wlpaiw2gMq1fDN78JZ54Jw4fDb38Le+9ddFRmZmZm3ULSjIho96l4fjiyddx668FXvgJ//WtKuidOTEn3ihVFR2ZmZmbWYzjRtnU3YQLcey9MmQJnnQW77w7TpxcdlZmZmVmP4ETbOmeTTdLj/667Lj1ne5994OST4YUXio7MzMzMrFBOtK1rHHIIzJoFn/kM/Pzn0NQE550HK1cWHZmZmZlZIZxoW9cZNAh+/GO46y5429vgP/8Tdt0VbrjBjwI0MzOzhuNE27reHnvAbbfBNdekGyTf/354xzvgppuccJuZmVnDcKJttSHBBz8IDz6YmpLMnw8HHgjjx8Mf/pCeVmJmZmZWx5xoW23175+akPz73/CrX8Fzz6X23KNGpX+X9B/emJmZWZ1yom3do39/+OQnYc4cuOQS2HTT9O+Sw4bBZz8L999fdIRmZmZmXcqJtnWvfv3gqKPS87anT0+127/4Rbppcvfd4dxzU623mZmZWS/nRNuKM358+vv2BQtSgi2l2u1ttoEPfAAuvNBJt5mZmfVaTrSteEOGpGYkM2akJiSf/Wy6ifITn4Att4T994ef/hTmzi06UjMzM7OqKerkcWvNzc3R0tJSdBjWVSLgnnvg6qvhqqvgoYdS/7e+Fd773tTtv3/6Z0ozMzOzbiRpRkQ0tzueE23rFR5+GG6+OXW33grLlsF668HYsTBhQnpO94QJsN12RUdqZmZmdc6JttWv5cvTjZT/939wxx1w553w8stp2Hbbpbbfb3/7m91WWxUbr5mZmdWVahPtvt0RjFmX6t8f3vnO1AGsXAn33ZeS7jvugJYWuPLKN8ffaquUcO+yS/pr+FK36abFxG9mZmYNwTXaVp9eeAHuvTe18y51Dz2U/hK+ZMstU8K9006p7ffw4W92W2yRnoJiZmZmVsY12tbYNtkE3vWu1JWsXAmPPpoS7nx31VWwePGa06+//ptJ97bbwtZbp26bbd58v+WW6bngZmZmZhU40bbG0bcvjByZuoMPXnPYSy/B44/DY4+lZPyxx958P2MGLFqUnoSSJ6VHE261VXrdfPO2u003hY03hgEDuukLm5mZWZGcaJsBDBoEO++cukpWrICFC+Hpp9funnkm1YjPnJleFy+GVataX1b//inhrtRtskl6HTQINtwQNtgg1a5vsMGaXXm/9dd37bqZmVkP40TbrBr9+sGwYalrT0RqI15KuhcvTv9wuXQpvPhiqj1/8cU1u6eegtmz3/z8+usdj7Fv35R0DxiQuv79O/far1+aZzVdR8bNd336pG699dZ+XW89t5M3M7NezYm2WVeTYPDg1O2ww7rNY/lyeOWV1L366pvv811r/V9/PU1f6fW119JJQHn/8nF7CqlyIt5act7Vr/lOapz3tZhfqct/7ophbY3nEzUzK5gTbbOeqH//1A0e3P3LjkhNZVaubL1rb3hHutWrU1Ob1l7bGtZVrytWtD48Ir3W+n2dPAGqx+lssl7rk4GeMv9GjbG1rppxGm06Wyc1TbQlTQJ+AvQBLoiIcyqMcyRwJhDAfRFxlKTtgauz6foBP42I82oZq5llpDcTfete3ZXUr8tJQFfMo9TlP3fFsJ4yj1rNvzetx0rDrH70xBOC73wHDjmk6DXTqpol2pL6AFOB9wDzgbskXR8Rs3LjjATOACZExBJJW2SDngb2iYjXJW0EPJhNu6BW8ZqZFU56s2mMWT3pyScDrXXVjOPpip+uiCu/HVDLGu1xwNyImAcg6TLgUGBWbpwTgKkRsQQgIhZmr/lGogOA9WoYp5mZmdVS6STSrMHUMoEdBjyZ+zw/65fXBDRJukPS9KypCQCStpN0fzaP71SqzZZ0oqQWSS2LFi2qwVcwMzMzM1s3tUy0K7Wcj7LPfYGRwL7AFOACSYMBIuLJiBgL7AgcJ2nLtWYWcX5ENEdE89ChQ7s0eDMzMzOzzqhloj0f2C73eVugvFZ6PnBdRKyIiEeBOaTE+w1ZTfZMYGINYzUzMzMz61K1TLTvAkZKGiGpPzAZuL5snGuB/QAkDSE1JZknaVtJ62f9NwUmkJJwMzMzM7NeoWaJdkSsBE4GpgGzgcsjYqaksyWVnsMyDVgsaRZwK3BaRCwGRgF3SroPuB34fkQ8UKtYzczMzMy6miLKm033Ts3NzdHS0lJ0GGZmZmZW5yTNiIjm9sbzY/PMzMzMzGrAibaZmZmZWQ3UTdMRSYuAxwta/BDguYKWbd3H5Vz/XMaNweXcGFzO9a/IMt4+Itp9tnTdJNpFktRSTTsd691czvXPZdwYXM6NweVc/3pDGbvpiJmZmZlZDTjRNjMzMzOrASfaXeP8ogOwbuFyrn8u48bgcm4MLuf61+PL2G20zczMzMxqwDXaZmZmZmY14ETbzMzMzKwGnGh3gqRJkuZImivp9KLjsY6RdKGkhZIezPXbTNItkv6dvW6a9Zekc7Oyvl/S7rlpjsvG/7ek44r4LtY6SdtJulXSbEkzJX026++yrhOSBkr6l6T7sjI+K+s/QtKdWXn9XlL/rP+A7PPcbPjw3LzOyPrPkfS+Yr6RtUVSH0n3SPpj9tnlXGckPSbpAUn3SmrJ+vXKY7YT7XUkqQ8wFTgQGA1MkTS62Kisgy4CJpX1Ox34c0SMBP6cfYZUziOz7kTgF5B2fOBrwHhgHPC10s5vPcZK4P9FxChgL+DT2b7qsq4frwP7R8SuwG7AJEl7Ad8BfpSV8RLgE9n4nwCWRMSOwI+y8ci2i8nAGNKx4efZsd56ls8Cs3OfXc71ab+I2C33nOxeecx2or3uxgFzI2JeRCwHLgMOLTgm64CI+CvwfFnvQ4FfZ+9/DXww1//iSKYDgyVtDbwPuCUino+IJcAtrJ28W4Ei4umIuDt7/xLpB3oYLuu6kZXVsuxjv6wLYH/gyqx/eRmXyv5K4ABJyvpfFhGvR8SjwFzSsd56CEnbAu8HLsg+C5dzo+iVx2wn2utuGPBk7vP8rJ/1bltGxNOQEjRgi6x/a+Xt7aAXyS4dvx24E5d1XcmaE9wLLCT9oD4CLI2Ildko+fJ6oyyz4S8Am+My7g1+DHwBWJ193hyXcz0K4GZJMySdmPXrlcfsvt29wDqiCv38rMT61Vp5ezvoJSRtBFwFnBoRL6aKrcqjVujnsu7hImIVsJukwcA1wKhKo2WvLuNeSNIHgIURMUPSvqXeFUZ1Ofd+EyJigaQtgFskPdTGuD26nF2jve7mA9vlPm8LLCgoFus6z2aXnMheF2b9Wytvbwe9gKR+pCT7koi4Ouvtsq5DEbEUuI3UHn+wpFKFUr683ijLbPgmpGZkLuOebQJwiKTHSM019yfVcLuc60xELMheF5JOnMfRS4/ZTrTX3V3AyOxu5/6kGyuuLzgm67zrgdKdyccB1+X6H5vd3bwX8EJ26Woa8F5Jm2Y3Wbw362c9RNYm83+A2RHxw9wgl3WdkDQ0q8lG0vrAu0lt8W8FjshGKy/jUtkfAfwl0r+3XQ9Mzp5WMYJ0c9W/uudbWHsi4oyI2DYihpN+c/8SEUfjcq4rkjaUNKj0nnSsfZBeesx205F1FBErJZ1MKrQ+wIURMbPgsKwDJP0O2BcYImk+6e7kc4DLJX0CeAL4cDb6DcBBpJtmXgE+BhARz0v6OunEC+DsiCi/wdKKNQE4Bngga8ML8CVc1vVka+DX2ZMj1gMuj4g/SpoFXCbpG8A9pBMustffSJpLquGcDBARMyVdDswiPa3m01mTFOvZvojLuZ5sCVyTNe/rC1waETdJuoteeMz2X7CbmZmZmdWAm46YmZmZmdWAE20zMzMzsxpwom1mZmZmVgNOtM3MzMzMasCJtpmZmZlZDTjRNjPr4SQty16HSzqqi+f9pbLP/+jK+ZuZNTIn2mZmvcdwoEOJdvZs6baskWhHxD4djMnMzFrhRNvMrPc4B5go6V5J/yWpj6TvSbpL0v2S/gNA0r6SbpV0KfBA1u9aSTMkzZR0YtbvHGD9bH6XZP1KtefK5v2gpAckfSQ379skXSnpIUmXZP++iaRzJM3KYvl+t68dM7Mexv8MaWbWe5wOfD4iPgCQJcwvRMSekgYAd0i6ORt3HLBzRDyaff549k9p6wN3SboqIk6XdHJE7FZhWYcDuwG7AkOyaf6aDXs7MAZYANwBTMj+hfEw4G0REaW/RDcza2Su0TYz673eCxyb/bX8ncDmwMhs2L9ySTbAZyTdB0wHtsuN15p3AL+LiFUR8SxwO7Bnbt7zI2I1cC+pScuLwGvABZIOJ/0VsplZQ3OibWbWewk4JSJ2y7oREVGq0X75jZGkfYF3A3tHxK7APcDAKubdmtdz71cBfSNiJakW/Srgg8BNHfomZmZ1yIm2mVnv8RIwKPd5GvCfkvoBSGqStGGF6TYBlkTEK5LeBuyVG7aiNH2ZvwIfydqBDwXeCfyrtcAkbQRsEhE3AKeSmp2YmTU0t9E2M+s97gdWZk1ALgJ+Qmq2cXd2Q+IiUm1yuZuAkyTdD8whNR8pOR+4X9LdEXF0rv81wN7AfUAAX4iIZ7JEvZJBwHWSBpJqw/9r3b6imVn9UEQUHYOZmZmZWd1x0xEzMzMzsxpwom1mZmZmVgNOtM3MzMzMasCJtpmZmZlZDTjRNjMzMzOrASfaZmZmZmY14ETbzMzMzKwG/j+HBUGCfC0GdQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#选择的梯度下降方法是基于所有样本的\n",
    "n=100\n",
    "runExpe(orig_data, theta, n, STOP_ITER, thresh=5000, alpha=0.000001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 根据损失值停止"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设定阈值 1E-6, 差不多需要110 000次迭代 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:23.816000",
     "start_time": "2016-09-12T22:42:02.225000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Gradient descent - Stop: costs change < 1e-06\n",
      "Theta: [[-5.13364014  0.04771429  0.04072397]] - Iter: 109901 - Last cost: 0.38 - Duration: 23.32s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-5.13364014,  0.04771429,  0.04072397]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, n, STOP_COST, thresh=0.000001, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 根据梯度变化停止"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设定阈值 0.05,差不多需要40 000次迭代"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:32.050000",
     "start_time": "2016-09-12T22:42:23.818000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Gradient descent - Stop: gradient norm < 0.05\n",
      "Theta: [[-2.37033409  0.02721692  0.01899456]] - Iter: 40045 - Last cost: 0.49 - Duration: 8.48s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-2.37033409,  0.02721692,  0.01899456]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, n, STOP_GRAD, thresh=0.05, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对比不同的梯度下降方法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Stochastic descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:32.786000",
     "start_time": "2016-09-12T22:42:32.052000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Stochastic descent - Stop: 5000 iterations\n",
      "Theta: [[-0.3884176   0.0083175  -0.04964856]] - Iter: 5000 - Last cost: 2.13 - Duration: 0.35s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.3884176 ,  0.0083175 , -0.04964856]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 1, STOP_ITER, thresh=5000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "有点爆炸。。。很不稳定,再来试试把学习率调小一些"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:34.091000",
     "start_time": "2016-09-12T22:42:32.788000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 2e-06 - Stochastic descent - Stop: 15000 iterations\n",
      "Theta: [[-0.00202289  0.00989019  0.00087132]] - Iter: 15000 - Last cost: 0.63 - Duration: 1.09s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.00202289,  0.00989019,  0.00087132]])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 1, STOP_ITER, thresh=15000, alpha=0.000002)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "速度快，但稳定性差，需要很小的学习率"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mini-batch descent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:36.331000",
     "start_time": "2016-09-12T22:42:34.094000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Original data - learning rate: 0.001 - Mini-batch (16) descent - Stop: 15000 iterations\n",
      "Theta: [[-1.03464714 -0.01417896 -0.0284658 ]] - Iter: 15000 - Last cost: 2.54 - Duration: 1.38s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-1.03464714, -0.01417896, -0.0284658 ]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(orig_data, theta, 16, STOP_ITER, thresh=15000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "浮动仍然比较大，我们来尝试下对数据进行标准化\n",
    "将数据按其属性(按列进行)减去其均值，然后除以其方差。最后得到的结果是，对每个属性/每列来说所有数据都聚集在0附近，方差值为1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:40.439000",
     "start_time": "2016-09-12T22:42:36.333000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Gradient descent - Stop: 5000 iterations\n",
      "Theta: [[0.3080807  0.86494967 0.77367651]] - Iter: 5000 - Last cost: 0.38 - Duration: 1.03s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0.3080807 , 0.86494967, 0.77367651]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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4ac/henTo//tUaOi/fa558LChaWOTkRERKRKxUy0JwA9zWwTM2sNHAGMzpvmAWBXADPrQDQlmQE8DuxpZu3TTZB7pjJprtZbL26SfPPN6AbwwguhRw+44gr46qtSRyciIiJSSdESbXdfCpxMJMhvAHe5+2Qzu8DM9k+TPQ7MNbMpwNPAWe4+193nAb8jkvUJwAWpTJq7TTeFO+6ACRPiRsnTToPeveGf/4Tly0sdnYiIiMg3zJtIbw6DBg3ysrKyUochq5I7PP44/PznMGkSDBoEl14Ku+5a6shERESkCTOzie4+qKbp9GRIabzMojcUibqVAAAgAElEQVSSl1+Gm2+Gjz6C3XaLXkomTSp1dCIiItLMKdGWxq9lSxgxAqZOjRrt//wneig55hh4++1SRyciIiLNlBJtaTrWWAPOOiuS67POgnvvhS22gBNPhFmzSh2diIiINDNKtKXpWXdduOSSSLh//GO48cboEvCMM0D9rYuIiMgqokRbmq5OneCqq2DaNDjyyOgecNNN4de/hgULSh2diIiINHFKtKXp694dbroJJk+GffaB3/8+Eu6LL4bPPy91dCIiItJEKdGW5mOLLaK/7Zdegh12gHPOKX/ozZIlpY5OREREmhgl2tL8bLUVPPwwPP98JN+nnRZtuK++Wgm3iIiI1Bsl2tJ87bADPP00PPkkbLIJnHyyEm4RERGpN0q0pXkzg913h2efhaeeKk+4e/SIGymVcIuIiMgKUqItApFw77ZbecLdoweccooSbhEREVlhSrRFsnIJ9zPPKOEWERGRlaJEW6SQbMI9dmzFhPuKK+CLL0odoYiIiDRwSrRFqmMGu+5annBvtln0UtK9O1x0EXz6aakjFBERkQZKibZIbWQT7mefhW22gV/+EjbeGM49Fz75pNQRioiISAOjRFukrnbaCR59FCZOhGHD4A9/iIT79NNh1qxSRyciIiINhBJtkRW19dZwzz3xaPdDD4Urr4xHu59wAkyfXuroREREpMSUaIusrN69YdSoSK5/+EO45RbYfHM4+mh4/fVSRyciIiIlokRbpL507w7XXAPvvAM/+xmMHg1bbgn77Rftut1LHaGIiIisQkq0Repbp05w6aXw7rvw29/C+PGw886w/fbR1GTZslJHKCIiIquAEm2RYll3XfjNbyLhvuYamDsXDjssmpVcc4364hYR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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn import preprocessing as pp\n",
    "\n",
    "scaled_data = orig_data.copy()\n",
    "scaled_data[:, 1:3] = pp.scale(orig_data[:, 1:3])\n",
    "\n",
    "runExpe(scaled_data, theta, n, STOP_ITER, thresh=5000, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "它好多了！原始数据，只能达到达到0.61，而我们得到了0.38个在这里！\n",
    "所以对数据做预处理是非常重要的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:52.663000",
     "start_time": "2016-09-12T22:42:40.442000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Gradient descent - Stop: gradient norm < 0.02\n",
      "Theta: [[1.0707921  2.63030842 2.41079787]] - Iter: 59422 - Last cost: 0.22 - Duration: 12.91s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1.0707921 , 2.63030842, 2.41079787]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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4UD+bsI2/lGMf+9i10tcTj8pEF+HuI3MIJwanhOnOahQbMSyjSLKaRqWCR8TTk83KKOyf0cj28hav5mwnzlZ95GmwLMP8u0z+fYDwr54CaEGcimh+cA4Gt47u8H2ldzHE/vjjXliuDE7/iK3sW2ATQoMP4NQPn5IqDDrkBg2jcT93SlcZjrh2pzkOsm7bRW5zLPvg/3bfMspT7+OhGaO82L3e6BjKes+jjuTUJa0T/Q7nbDtf0zYL35azH6V/b2EC7NfI+QRv4/9tiNcY7KA0FTrEWBIYtv/edY8jyLsN0sI5cEfksuC0NRtAaGM2YOwzz2RGL439eXQZBqWIQ222expc3UWRxQRERERkTKouiYiIiIiIiItmRJsEREREZEyUoItIiIiIlJGSrBFRERERMporXsTV7tevXp5//790w5DRERERNZzkydPfs/dG3sg1FpaXILdv39/6urq0g5DRERERNZzZpb9hMeiqImIiIiIiEgZKcEWERERESmjiibYZnawmU03s5lmNi7H8N+Y2Quxe83MFlUyHhERERGRSqtYG2wzawNcCRxAeHzmJDOb4O4vZ8Zx99MT458C7FKpeEREREREmkMla7CHAjPdfZa7rwDGAyMLjH8scHMF4xERERERqbhKJth9gdmJz3Niv7WY2RbAlsAjeYafaGZ1Zla3YMGCsgcqIiIiIlIulUywLUc/zzPuMcBt7r4610B3v9rda929tnfvkm9FKCIiIiLSbCqZYM8BNkt87gfMzTPuMVRz85BZs+Dss2HOnLQjEREREZEqV8kEexIwwMy2NLP2hCR6QvZIZrYd0BN4qoKxrJv33oNf/AL0gBsRERERaUTFEmx3XwWcDNwPvALc4u7TzOxCMzs8MeqxwHh3z9d8JH0DB4bXl15KNw4RERERqXoVfVS6u98L3JvV79ysz+dXMoay6NIF+veHadPSjkREREREqpye5FiswYNVgy0iIiIijVKCXaxBg2D6dFi5Mu1IRERERKSKKcEu1uDBIbmeMSPtSERERESkiinBLtagQeFV7bBFREREpAAl2MXafnuoqVE7bBEREREpSAl2sTp1gq23Vg22iIiIiBSkBLsUupOIiIiIiDRCCXYpBg2CmTNh2bK0IxERERGRKqUEuxSDB8Pq1eF2fSIiIiIiOSjBLoXuJCIiIiIijVCCXYptt4V27WDKlLQjEREREZEqpQS7FO3bw8CB8MILaUciIiIiIlVKCXapdtlFCbaIiIiI5KUEu1RDhsC778I776QdiYiIiIhUISXYpRoyJLw+/3y6cYiIiIhIVVKCXapMgq1mIiIiIiKSgxLsUnXvDltuqQRbRERERHJSgt0UQ4aoiYiIiIiI5KQEuyl22SU8Mn3JkrQjEREREZEqowS7KYYMAXc9cEZERERE1qIEuyl0oaOIiIiI5KEEuyn69YONNlI7bBERERFZixLspjCDXXeFyZPTjkREREREqowS7KbafXeYOhWWLk07EhERERGpIkqwm2roUFi9Ws1ERERERKQBJdhNNXRoeH322XTjEBEREZGqogS7qfr0CRc7TpqUdiQiIiIiUkWUYK+L3XdXDbaIiIiINKAEe10MHRqe6LhwYdqRiIiIiEiVUIK9LjLtsNVMREREREQiJdjrYrfdwqsSbBERERGJlGCvi+7dYfvt1Q5bRERERD6lBHtdDR0KzzwD7mlHIiIiIiJVoKIJtpkdbGbTzWymmY3LM84oM3vZzKaZ2U2VjKci9twT5s+HWbPSjkREREREqkDbSs3YzNoAVwIHAHOASWY2wd1fTowzADgLGObuH5jZxpWKp2L23ju8PvkkbL11urGIiIiISOoqWYM9FJjp7rPcfQUwHhiZNc63gCvd/QMAd59fwXgqY+BA6NEDnngi7UhEREREpApUMsHuC8xOfJ4T+yVtC2xrZk+a2dNmdnCuGZnZiWZWZ2Z1CxYsqFC4TVRTA3vtFWqwRURERKTVq2SCbTn6ZV8J2BYYAOwHHAv8xcx6rDWR+9XuXuvutb179y57oOts2DB4+WU9cEZEREREKppgzwE2S3zuB8zNMc6/3H2lu78BTCck3C1Lph32f/+bbhwiIiIikrpKJtiTgAFmtqWZtQeOASZkjXMX8HkAM+tFaDLS8m7Hsfvu0K6d2mGLiIiISOUSbHdfBZwM3A+8Atzi7tPM7EIzOzyOdj/wvpm9DEwEfuTu71cqporp1Ck81VHtsEVERERavYrdpg/A3e8F7s3qd27ivQNnxK5lGzYM/vAHWL4cOnRIOxoRERERSYme5Fgue+8dkms9Nl1ERESkVVOCXS777ANmMHFi2pGIiIiISIqUYJfLhhvCLrvAI4+kHYmIiIiIpEgJdjntvz889RR88knakYiIiIhISpRgl9P++8OKFboftoiIiEgrpgS7nD73OWjbVs1ERERERFoxJdjl1KULfPazSrBFREREWjEl2OW2//4waRIsXpx2JCIiIiKSAiXY5bb//rBmDTz+eNqRiIiIiEgKlGCX2x57hEenP/hg2pGIiIiISAqUYJdbx46w335w331pRyIiIiIiKVCCXQlf/CLMmAGvv552JCIiIiLSzJRgV8KIEeFVtdgiIiIirY4S7ErYemsYMADuvTftSERERESkmSnBrpQRI2DiRFi6NO1IRERERKQZKcGulBEjYNkyeOyxtCMRERERkWakBLtS9t033FFE7bBFREREWhUl2JXSqVN46Mzdd4N72tGIiIiISDNRgl1Jhx8Os2bBSy+lHYmIiIiINBMl2JU0ciSYwZ13ph2JiIiIiDQTJdiVtMkmsOeeSrBFREREWhEl2JV2xBHwwgvwxhtpRyIiIiIizUAJdqUdcUR4veuudOMQERERkWahBLvStt4adtwR7rgj7UhEREREpBkowW4ORxwBTz4J776bdiQiIiIiUmFKsJvDkUeGe2HffnvakYiIiIhIhSnBbg477giDBsFNN6UdiYiIiIhUmBLs5mAGxx4bmom89Vba0YiIiIhIBSnBbi7HHhtex49PNw4RERERqSgl2M1lq63gs5+Fm29OOxIRERERqSAl2M3puOPgxRfh5ZfTjkREREREKkQJdnMaNQpqanSxo4iIiMh6TAl2c9pkEzjgALjhBli9Ou1oRERERKQCKppgm9nBZjbdzGaa2bgcw8ea2QIzeyF236xkPFXhG9+A2bPhoYfSjkREREREKqBiCbaZtQGuBEYAA4FjzWxgjlH/6e5DYveXSsVTNUaOhI02gmuvTTsSEREREamAStZgDwVmuvssd18BjAdGVvD7WoYOHeCrX4W77oL33ks7GhEREREps0om2H2B2YnPc2K/bEea2RQzu83MNss1IzM70czqzKxuwYIFlYi1eZ1wAqxcCf/4R9qRiIiIiEiZVTLBthz9POvz/wH93X0n4CHg+lwzcver3b3W3Wt79+5d5jBTsOOOUFsbmol49iIRERERkZaskgn2HCBZI90PmJscwd3fd/fl8eM1wG4VjKe6fPObMHUqPP102pGIiIiISBlVMsGeBAwwsy3NrD1wDDAhOYKZ9Ul8PBx4pYLxVJfjj4fu3eGKK9KORERERETK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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(scaled_data, theta, n, STOP_GRAD, thresh=0.02, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "更多的迭代次数会使得损失下降的更多！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:58.954000",
     "start_time": "2016-09-12T22:42:52.665000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Stochastic descent - Stop: gradient norm < 0.0004\n",
      "Theta: [[1.15005915 2.79417489 2.56594586]] - Iter: 72688 - Last cost: 0.22 - Duration: 6.16s\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "theta = runExpe(scaled_data, theta, 1, STOP_GRAD, thresh=0.002/5, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "随机梯度下降更快，但是我们需要迭代的次数也需要更多，所以还是用batch的比较合适！！！"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.693000",
     "start_time": "2016-09-12T22:42:58.957000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "***Scaled data - learning rate: 0.001 - Mini-batch (16) descent - Stop: gradient norm < 0.004\n",
      "Theta: [[1.1699704  2.84033214 2.61341087]] - Iter: 4444 - Last cost: 0.21 - Duration: 0.50s\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1.1699704 , 2.84033214, 2.61341087]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwIAAAEWCAYAAADVZCAcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3WeYVeX19/HvoolIkyIKiFgwCgpIBhUrKgZQqSpiQTDGFss/0dhiTHyssUSNXYy9gBQVFAG7YkEFURRbsCFFQCkCKgqs58XaEw7HMzNnYIZzZub3ua5zwex6777Xvpu5OyIiIiIiUrVUy3UCRERERERk41MgICIiIiJSBSkQEBERERGpghQIiIiIiIhUQQoERERERESqIAUCIiIiIiJVkAIBEZE8YWZNzewTM6tdBss6y8z+WRbpEhGRjc/MWpnZcjOrXm4rcfec/4B9gNeBpcAi4DWgc8r4rYC7gXnAMuBj4P8Bm6VMY8DnwIcZlv8S8IcMw1sDDixP+x2VjL8P+DlZ5zLgA+AqoEEx23IJ8EvKPJ8CtwBbZZh2W2ANcFvKsFZpaXFgRcrf+6aty4HdN3D/dwVmFzGucB+kpum9tGk2S4Y/nWH+L4Efk/HfJMurm7b8dbYB2CFOzV8fvyStDtyatp5XgSFp58xdwNxk3Z8n69qpmH2wJpl2GfAJcEKG6TKeZ8CMlP2zGvgp5e+/AkOS4ennWvMsj1Fr4EXgB+L871bMtJsA9wDfJ/v87LTxByXL+CFZ5jYp4wYQ1+IPwEtlcG07MB+okTKsBrBgQ45xsj9fzeI6LNzPHwGHl+U1COwOPA0sIe5bbxWeMxRxTVHEvShl/L+AC7I9HkB14HLiPF8GTAMaJuNqA7OBLUo4PoXb9h3wPMn9Ly3NqefzcuDJlPF/Bb5Ihs8GHk2bvzvwSpK+hcDLQO+U41jkdUHcP+az7r3+D0masr5XluJ8bUhcO9+w9v59finOib2AF5J5lwJPAm1Le58pJn31gOuT/bICmAWMYt37Z2ra5iTTV8+wrPuAVaTdg8jiGUba+V3cOUIJ13Ny/hTO81Pa+TAjQ7pbJ8sblzb8IeCStGN5e3IsfwDeT9/XZP986p02343J8CHp6duQH/F8uZq4Fr8DrgGsmOmPAb5KjvcTQKOUcY2Ax5NxXwHHFLGMe5Nt2WED0l3k8a/ov9R9k1wbD5Xz+r6kmOd7efxyniNgZvWBp4CbiRO3BfGSvzIZ3wh4A9gU6OLu9YCDiYt8+5RF7QdsAWxnZp1LmYyG7l435fdoyrhrknU2BU4A9gReM7PNilneo8k8jYB+wJbAVDPbKm2644HFwEAz2wTA3WelpiWZrkPKsEnJfjFgEPECMriU21ta16Ttnw5p448gjtfvMmwjQK9kWzoCuwEXpo1fRLzMZGsFcLyZtc400swaEy9PdYB9iYdnJ+IF5OBiljs3SWd94M/AXWb2m7RpMp5n7t4u5ZhNAs5I2V9XJpO9kbYf67r73Cy3eRjxktcYuAgYZWZNi5j2EqANsA1wAHCemfUAMLMmwGPAxcT5OQVIPd8XEQ+5svySvATomfL3IcR5X5xij3GWHk05Jn8CHjKzZmnTrNc1aGZdiBe+l4nAtTFwGutuZ6kk6x9MvNAUKul4/D/i5bMLcd4OIh7IuPtPwPhkG4vTIdnO3xAvPreY2T/Spjkj7bztlaR5cLLObskyCohgonCbjgBGAg8ALYFmwN+BXinLLum6qAH8X3qis71XltINQF1gZ6AB0Bv4rBTnxDPAGKA5EWS+RzwvtktZR+p95nziPtO2pIQl58cLwK7AYcn8OwPDiWsqVeEx3R84Cvh92rI2Aw4ngpVjM6wu22dYqoznSKLI69ndr0zZr6ey7vnQrpj17Wlme2caYWa1gOeIe2AX4lieC/zTzM5Om7yk59OnpDxjzawGcCTwWTFpK5KZNSi812RwMtAX6AC0J47zKUUspx1wJ3H9NSOCndtSJrmV+IjXjDjGtyfzpC5jH9Z9j9oQxR3/1HXWyGZYcUo7fb7I13TnPBAAdgRw92Huvtrdf3T3Z9x9ejL+bOKrxHHu/mUy7dfu/n8p00BcqGOIL3Rl/mLs7j+5+9vEg6ExERSUNM8v7j6DuBEvBM5Jm+R44G/E15eMF00x9iUeNv9HvMTUKuX8ZWkwcAcwncwPFQDc/RtgInHDTXU/0N7M9s9yfUuIF5b0l5VCfya+hg9y9888LHH3e9395pIWnkz/NPES1j5tdLmeZ5mY2Y5EIPOP5PoYTXzdOryIWY4HLnP3xe7+EZEzMiQZ15/4yjYyeVG8BOhgZjsBuPtz7j6C+MJcVh5k3ZfR44kXw+KUdIxLxd0nEveR9Ife+l6D1wL3u/vV7v5tcs5MdfcBG5DMPYAl7j47Jd1FHg8z25wIcE5y96+SNHyQHNdCLwGHZrPyZDseJAKaC5OAuiSdgYnu/lmyjG/cfWiSPiO+Rl/m7v9x96XuvsbdX3b3k7JJU+Ja4C9m1rAU86yvzsAjybWzxt0/dvdRWc57DfCAu//b3Ze5+yJ3/xswmbjO1pEcryeIQLTEQIB44WsJ9E2O82p3X+Huo9z9V8tP1jGTyGFPv+ceTlxjl1LMfSyLZ1i2yvR6TlxD0R+QBhG5OEe6+xfJdkwAzgIuTT5ArqOY59OTwN7J9QbQg3jWfZNtQs2smpl1M7OHga+BJkVMOhj4l7vPdvc5RA7hkCKmPZb46v6Kuy8nPu70N7N6KYHexe6+3N1fBcYS+6UwTTWID7BnZLsd68PMuprZbDM738y+Ae7NNCyZ9iQzm2lmi8xsrJk1T1mOm9npZvZf4L8Z1jPBzM5IG/aemfW3cIOZLTCzpWY23cx2KeV29CByr45Kiuq8lwxvYGZ3m9k8M5tjZpcXFuMxsyFm9lqy7kXAJWa2vZm9YGbfmdm3ZvZw4b3NzB4kztsnk3WcZ2atk22vkUzTPNk3i5J9dVJKGi8xsxFm9oCZLTOzGWZWUNK25UMg8Cmw2szuN7OeKRdboW7AY+6+pqgFmFkd4qv0w8mv3F6M3X0Z8CzxIp7tPKuJl8f/zWNm+xI39eHACEr+apduMHGDKvyae1gp5y8TZtaKyPot3PdFboeZtSS+mM5MG/UDcCVwRSlWfQVweIYv9hDnzOPFnTPFSW7avYmb9cyU4eV2npnZbWZ2WxGj2wGfJ+deofeS4enL2ZwIEN8rYtp2qePcfQXxZau4L28b6glgPzNrmNzw9iWuh5IUd4yzljwEDgVqAR+mDF+vazA5D7oQRTLK0q5EUZHSTL8KOMLMvjGzT83s9LRpPiK+LpbGGOIr/O5ZTDuZ+NJ7rpkV2LrlWH8DbM2G76cpREDzlw1cTjYmA1eY2Qlm1ibbmZJzYi8i9yPdCDLkRCb3mX5E7vb7ybDpZnZMEavpRgRdK0qRrp2I6y39njuYyGUcDuxkZp2KW06mZ9h6KJPrOcWtwI5m1i3DuIOB8Rn21WiiyFyX9BmKeT79RLxED0z+zuZDRuEytzOzS4mic9cD7wBtkpf8TNa5P1PEfT7TtEkw/jPxcXVHYLW7f1rMsv4MvJL2QbW8bEnkLm1D5Hr8apiZHUgUvR5AFO39ijg/U/UlPphkCpwfAY4u/MMil20bYBzwOyI3f0fiejuKKHqVtSSQvJK1Oc2F99X7ifvwDkSO0u+I4ouF9iCKE29BXAOWbGdzIkdva5IPBe4+iCju1ytZxzUZkjKMKILZnHgfudLMDkoZ35vYbw2J8/aWkrYt54GAu39P1BFw4svlwiTaKczCb0zUDShOf6JoyjNEMaMaZPkVLPGtmS1J+e1cwvRziRO4NNLnGUzcqBYTJ3BPM9simwUlD50jiS9XvxAP2vL8Ov2XtP1zf8q444Hp7v4hcYK2M7Pd0uZ/wsyWEV9CFpD5q9CdQCszy6poRfL15g7ii1a6JqR8rTGz3km6l5nZM8UstrmZLSHKjD5OlK2fljJ+Q8+zPdP24/+ylt39j+7+xyLmq0tk4adaShR5yjRt4fhM05ZmWWXlJyJoPYp4mI5NhhWrhGOcjQHJ8VyRrPNKd1+SMn59r8HNiXtnSfel5mnHewlxrytKQyLXIlstiSIPOxLFUI4gvjilvnQuS6bJWnJP+ZZ171c3pW3LZcm0DwFnEvUAXgYWmNkFyTyFOQol7acir4sUfwfOtKKLw5WVM4kg/wzgw+SLWzb3pEYUfU7MY90vwIX3mW+Je+Egd/8EwN3bu/sjRawj/b7WMdlf35tZegD5jpmtIALBl0gpMpJ8vDmAeH7MJ4pyZfP8KOm5l/EcKVQG13O6n4gXq0y5Ak3IcCzcfRWx31OPRzbPpweIgLcBUdzqieISZmYdzOwlIrBsCPRLju2/kn1elPT781KgrplZFtMWTl+vhHGY2dZEkaO/F7cdpVTc8V9D5GivdPcfixh2LHCPu7/j7iuJIlpdbN3iZFclOW0/8muPAx3NbJvk72OJj8griRzfesBORJ2Lj9y9pPtSiZL31J7An5LcuQVE8cKBKZPNdfeb3X1VkqM/092fTbZ7IREgZlUaIjlu+wDne5RSeRf4Dyk5PUTduaeT4P1BsvgQlPNAACA5KEPcvSWwCxHp3JiM/o6IDoszGBiR7OiVRBno0rwYN3H3him/j0qYvgVRbKQ0/jePmW1KvMg/DODubxBRYFFfgtL1IyLQp5O/HyZeYjI+JC2ymAp/rUqZboDr0vZP6r49PmU75hIvA+n7vq9HedOuxIX4q2zR5Lhdlvwy3fQyuRrobmbpJ/o654y7j3X3hsQXkOK+4M9NpqsP3AQcmDZ+Q8+zyWn7MduymcuTNKWqT+aXxuUp4zNNW5plFcvMxqecV0UWCUs8QJwrWX9NSxR1jFPTcWxKOsanjBqR7Oc6RJGg483slGSeDbkGFxMPsZLuS3PTjndDooJkccstTUBW+DC8NHnATOfX5cXr8esXgmKZWU2iTlTqPe6stG25uHCEuz/s7t2IF55TiaIX3Vn7xa2k/VTideHuHxDB9wW/nj3r7do35TyZkWmaZD9e6e6/JQKZEcBIi7pqxSnunNiKePksVHheNHL3ju6e/tWzKOn3tXeTc6o/0UBAqk7Ey+BRxBfJ1Dptg4CPkpcIiGvgmOS4F6ek516R50iKEq/nUroLaGZm6cX6viXDsbAoXtGEdY9HNs+nV4lr4m/AU0W8iKZqmCxrJvElPj2XoSjp9+f6wHL3qEVawrSF0y8rYRzE+9Wl7l7ivcHM/ppy3dxRzKTFHf+Fvm6RxUzDmhO5AAB4FHf6jjjvCn1d1Mo9cszHsfYlfCBr7+8vEF/GbwXmm9lQy1A8bD1sA9QE5qV87LmT+PqfMc1mtoWZDbcoRvQ9USesqKJi6ZoDi3zd0gFfse4+Si2y9gNQ20qom5AXgUAqd/+YKEtYWH7rOaCfmWVMa5KddyBwnEX2+DfEl7FDLCpGlikzq0tk0WZdES1Je6+UefoRF+VtKWluQfbFgwYTN/lZybwjiZPx6EwT+7oVeGZlm+6SmNleRKXUC1O2Yw/g6Ewnnru/TBzb64pY5L3E18t+2azf3b8jbmiXpY16Huhb1DmTxXJXEpX4djWzvrDxz7M0M4jKyakviR2S4elpX0x8CetQxLQzUsdZlCXdPtOySuLuPVPOq4dLmHwS8WBuRvEvw+nrKOoYp07zcEo6Mn699ahfNJ619QDW+xp09x+IBgyKqqOxvqaT1JkqxfQQualF2Zl1ixpkow/xoeGt0szkUQ57ZJKuXYhiTl9TdvvpH8BJrPvQK036Jnl2lVALp/+eKAqwGZHjUty0K4hz4sgMoweQUoF6AzxPNMhQXEMVqWlyj/olb7Dul9/jiftJ4Xl/PfEiUmTOR4Zn2HrJ5nou5fJ+ISrMp39Aeo74OJa+rw4ncnUnZ1hWSc+nh4g6EiV+yEiW1ZIoAnIo8aweZmY9rPhmINe5P1PEfT7TtBYV0jchilt/CtSwdYu3pS7rIODalHMA4A3LUCzNUypzu/upxaS9OJnuUenD5hIv1sD/nk2NiZaviltOqmHE+0cXooGZF/83o/tNSYDfjrjPnpt16ote/9fE+ZT6Mbl+2v0lfZ6rkmHt3b0+cBzrnrvFbeNcoFHau0Ar1t1HpZbzQMDMdjKzc5IXrcKsj6NZe6FeTzyw7y/M8jGzFmZ2vZm1J75ufEqUR+2Y/HYkylClvhjXMLPaKb+Svn6kp3MTM/stkSW4mKRySwnz1LQoZjSMKA93fTJqMNFE3a4pad6byNbatYRltiAu4sNS5u1AfGnZoOJBafundhHZkakGE/Ul2qakZReitZ6iHio3AgebWXqFrMJs20uIl/BsXU+Uzd05bdjmwIMWFXMsuXB+tc6iuPvPREWtwgdotudZmfMo5/ku8I/kuPQjKjGPLmKWB4C/mdnmFmWETyIecBDZp7uY2eEWbdX/nSja9TGAmVVPhtcAqq3PtVLENjjxItG7iK9bxcl0jEslub/0YO2DcL2vwcR5wBCLsvGNk3V0MLNsv+5m8hbQMLnGC9Nd5PHwKBM8CbgouT/tTHwBfiplmfsTAVCJzKxRkrNzK3B18tJW0jxDzOxQiwqK1SyK0bQD3kyO89nAxRZl7usn0+xjZkOzSVMqj4qvjxIVPsuFmV1sZp3NrFay3/+PqOiaTd2NC4DBFv031Euuv8uJ8uj/rwyS9wAR5D9uZruknBslVQb8J1EGe8vkBWl7ov5H6j37ETI8P4p5hm2IDb6e0zxIvAD3SBs2m8jNaZ1sR3cip/eSYr6EF/l8SuY9mGgKt0RJzvGT7t6fKD8+mXgJ/NqKLoL4AHB28o7TnAg87iti2oeBXhY5XZsRRa4e86iovoLIsb7UzDazaF2pD7FfIJ5dHVh7DkDcnx/PZtvKySPACRZF3jYhgvA3k4842XqaCCYuJcryrwFIruk9knvnCtY2U1ta84HWhR8ZPYoXPQP8K+X+tr0V3/BJPSLHZklyr08PSOYD2/1qrljf10SLiFclz4L2wIkkOR/rzXPfRmsLIvt1DnGA5hBZK/VTpmnOum07f0x8HaqT/P/MDMs9D5iS/P8lIspK/T1E0f0InJ3Mdx9r+xFYQbxEXE3STncR23MJa9svX0HUbr8NaJGyvauAXTPM+zRRDCd12Drt+xIPm6kZ5m2erHeX9TgGXTPsHyduXoX7IHX/fEtUuFpMVGpJX95twCgvok1com3n0Sn7+PKUcdWI/ho8ZdhLrNvG/Oy05Z1HWpvOyf4o7HtiOVEh9n5g52L2Qfpy6yTb2iub8yxTelOGDSFze+mdk/F3AHcUc4xaJ8v9kXgp6ZYy7lhS2ttm3X4E5vPrfgS6JdvzY7LM1mnpTD8P7tuA6ztj+9SU3FdEsceY0vcjMC/Zx3XYwGswZfjuxEt2Yf8nbwLHF7UNRZ0baeOvJcp/ZnU8km2ZwNq+Mk5JGVfYj0CzEo5PYZvzi4gvaMdkSHN6G+FTk3H9iVZpFifn2/ukta1OvKBNSuZbmCzv0Cyviy9Z91zfOknLS9mea6U8X/9G3H++T/bHS8BepTiv90nmWZ4sYxwp9+SizouU8TOAY4sZ34B4WS1sO/4r4oNAej8CO6TNN574sHEHyb03w7m8kqgDcAnFPMMybUcJ58ivtpkM9+xsrutkmtbJvKl9kwxIhl2SMqwR8S4xn7jXzeDX9+V1zq9kWJHPp7Tp1um7phTnWAdS+ipIG2dEa0iLkt86/Qjw676EjiGKNK4gKnOn9yPwBGv7m8jYj0BZXDvrcfx/NSwZfirxrF5EfNBoWdo0Es99Z92+qA4icioL318eLjwGREtA47PZN0QOxavE/e6dlGvyduJeu5Ro5ntgUecz8aFkapKWd4lgL/Va6pMcryVEAwnrnO9ETtNTyT76DDg1Zd5LSOnnIH3eon6WTCwiIjlmUc9nErCbl1wOuaRlnQls7e7nlUniRESk0lEgICIiIiJSBeW8joCIiIiIiGx8CgRERERERKogBQIiIiIiIlVQsZ0MVHZNmjTx1q1b5zoZIiIiIlLJTZ069Vt3L+8e0kulSgcCrVu3ZsqUKblOhoiIiIhUcmb2VclTbVwqGiQiIiIiUgUpEBARERERqYIUCIiIiIiIVEEKBEREREREqiAFAiIiIiIiVZACARERERGRKkiBgIiIiIhIFaRAYGNbswbOPhsmTQL3XKdGRERERKooBQIb28cfw113wX77wVZbRVAwY0auUyUiIiIiVYwCgY2tbVuYOxfuvx9++1u49VbYZRfo2hXGjoWff851CkVERESkClAgkAv16sHxx8O4cREUXHQRzJwJffrAppvCllvCtdfCtGkqPiQiIiIi5UKBQK41bgyXXw5ffAGPPQbdu8P8+XDeedCpEzRoAMccA2+8oaBARERERMqMeRV+uSwoKPApU6bkOhm/5g4vvBA5Bt9/D6NHw5IlUFAAp50GAwZA3bq5TqWIiIiIZMnMprp7Qa7TkUo5AvnIDA46CK6/Hv7zH5g1C26+GZYvhxNPhObN4ZRT4K23lEsgIiIiIutFgUBFUK8enHEGfPghvPYaHHEEPPQQ7LEHtGsHl10GixblOpUiIiIiUoEoEKhIzGCvveCee2DePBg6NOoY/OMf8a9ZVDgeOxZWrcp1akVEREQkjykQqKjq14eTToqOyaZNi/4I9twTXn89goFttoGBA+HFF1V8SERERER+RYFAZdChA/zrX9Gy0Lx58Pjj0L49PPooHHhg/P+mm2DhwlynVERERETyhAKByqZGDejbF8aPh2XL4I47ouWh//u/qGS8994wcWKMExEREZEqq1wDATPrYWafmNlMM7sgw/izzexDM5tuZs+b2TYp4yaY2RIzeyptnvvM7Aszezf5dUwZ1zUZNsPMXi7PbasQ6taN1oW++gqmTo3/T5sGPXpE0aLWreH3v4/OzERERESkSim3QMDMqgO3Aj2BtsDRZtY2bbJpQIG7twdGAdekjLsWGFTE4s91947J791kfQ2B24De7t4OOLLstqYS6NQJbrkFFi+OSsZ77w2//AL33gtt2kDHjpFrMG1arlMqIiIiIhtBeeYI7A7MdPfP3f1nYDjQJ3UCd3/R3X9I/pwMtEwZ9zxQmvIrxwCPufusZP4FG5L4SmuTTaKS8auvRv8EX3wBV10VFYpvuikChj33jGBh8eJcp1ZEREREykl5BgItgK9T/p6dDCvKicD4LJd9RVKc6AYz2yQZtiOwuZm9ZGZTzez4TDOa2clmNsXMpiys6pVnq1eP4kEXXADvvQfffQc33hh1Ck45BbbaKiobX399DBMRERGRSqM8AwHLMCxjO5ZmdhxQQBQHKsmFwE5AZ6ARcH4yvAbwW+BQoDtwsZnt+KsEuA919wJ3L2jatGkWq6tCGjWK4kEffABvvgmnnx7BwTnnQIMGsN9+kWuwQJktIiIiIhVdeQYCs4GtU/5uCcxNn8jMugEXEWX7V5a0UHef52ElcC9RBKlwfRPcfYW7fwu8AnTYwG2omqpVg913jyZJ33sPJk+OvgnmzIlAoUULOOwwePZZdVwmIiIiUkGVZyDwNtDGzLY1s1rAQGBs6gRmthtwJxEEZPWZ2cy2Sv41oC/wQTJqDLCvmdUwszrAHsBHZbIlVd0ee8ATT8Bnn8GMGfCXv8Bbb8HvfhdBwUknwbhxsLLEOE5ERERE8kS5BQLuvgo4A5hIvJCPcPcZZnapmfVOJrsWqAuMTJr9/F+gYGaTgJHAQWY228y6J6MeNrP3gfeBJsDlyfo+AiYA04G3gP+4e2GQIGWlbduoXDxrFowcCV27wv33Rw5Bs2bRHOnEidEikYiIiIjkLXPPWGy/SigoKPApU6bkOhkV37x58Mor0YnZ6NGwfDlsuSUMHAjHHgsFBblOoYiIiEhOmdlUd8+rlyIFAgoEytYPP0TdgaFDI2dg9Wro3DkqG/fvDwMGQOPGuU6liIiIyEaVj4FAufYsLFVQnTpRsXjcOFi4EG6+OeoOPPcc/PGP0KQJ9OoVQYIqGouIiIjkjAIBKT+bbw5nnBEtD336Kbz8Mvz5z9EKUY8eUdH4rLPi7yqcMyUiIiKSCwoEZONo0yb6Ibj+evj6a3jssfh76FDo0iXG33wzLFqU65SKiIiIVAkKBGTjq10b+vWLVofmz4f77osiRWedFfUHdtoJ+vaFYcNgxYpcp1ZERESkUlIgILnVoAEMHgzvvBOVjAcPjlyBMWPgmGOi+NDgwVGsSMWHRERERMqMAgHJDzVqQLdukTswf34EAy+8EE2PPvBA9Few5ZbRT8Gjj8KyZblOsYiIiEiFpkBA8o9ZVDQ+4IBobWjZsggGdtstcgoGDoT69aFdu2ih6OGH4aefcp1qERERkQpF/QioH4GKZfVqeO01uP326MDsxx/h55+jiFGvXnDggXDkkVC3bq5TKiIiIvI/+diPgAIBBQIV25o1UbfgkUdgxIjIGahTB2rViroFfftG60TVlPklIiIiuaNAIM8oEKhkVq+GN9+Em26KegSFtt4afvc7OOQQ6N076iOIiIiIbET5GAjoM6lUHtWrw157wfDh8MsvUbdg2DDYYQe4+244/HDYZpvo4fiNN9QKkYiIiFRpCgSkcqpRI+oJDBwYrQ8tWBCdmLVtG/UL9toLdt4Zzj8fpk5VUCAiIiJVjgIBqRqaNo1OzJ59FhYvhltvhVatoqfjggLYcUe4+GKYNSvXKRURERHZKFRHQHUEqrZFiyKnYPhwePHFqFTcqRNsu21UMj7yyAgiRERERDZAPtYRUCCgQEAKffUV3HIL3Hnn2g7LateGAQPg5JOjOJFZbtMoIiIiFVI+BgIqGiRSaJtt4NprI5dgxgx45plogvTxx2GffeA3v4EzzoAPPsh1SkVEREQ2mAIBkXQ1akSl4oMPhjvugLlz4bbboEkTGDoUdt0VdtoJrrtOQYGIiIhUWAoEREpSty6cdhq8/noEBf/+N9SvD+eeG0HB/vtHpePFi3OdUhEREZGsKRAQKY0mTeCss6Ljsv/+F664Ar77Ds45B7bcEo44AsaOjX4MRERERPKYKgursrCUhalT4cEHowOzBQsix6B7d9hzT+jfH1rOGN/KAAAgAElEQVS3znUKRUREJIfysbKwAgEFAlKWVq2CCRMiV2D06Kh4DHDggXDccZFjUK9ebtMoIiIiG10+BgIqGiRSlmrUgMMOi0rFc+bAe+/BeedFR2W//z00axYBwfDhsHJlrlMrIiIiVZgCAZHyUrs2tG8PV18Nn34alY0HDYJx4+Doo2P8b38L998PP/yQ69SKiIhIFaNAQGRjMIMuXaKzsu++i+JD3bvDRx/BkCHRMtHAgTBxIqxenevUioiISBWgQEBkY6tWLYKACRNg+XJ44onIKXjmGejRA7bbDi66CCZNgjVrcp1aERERqaQUCIjkUrVq0KdPFA+aMwcefRR23hn++U/Ybz9o1Qr+9jeYPh2qcMV+ERERKXsKBETyxaabwoABkVMwbx48/DC0awdXXQUdOkCbNvDXv8KXX+Y6pSIiIlIJlGsgYGY9zOwTM5tpZhdkGH+2mX1oZtPN7Hkz2yZl3AQzW2JmT6XNc5+ZfWFm7ya/jmnjO5vZajM7ovy2TKScbbEFHHNM1BmYNw9uvz06M7vqKth+e9h3X7jjDlUyFhERkfVWboGAmVUHbgV6Am2Bo82sbdpk04ACd28PjAKuSRl3LTCoiMWf6+4dk9+7aeu8GphYRpshkntbbAGnngqTJ0czpBdcEEWFTjsNGjaEffaJokTTpqn4kIiIiGStPHMEdgdmuvvn7v4zMBzokzqBu7/o7oWfNCcDLVPGPQ8sK+U6zwRGAwvWO9Ui+WzrreGKK2DxYnj6aejVC956Cy68EDp1ivHnnRdNla5alevUioiISB4rz0CgBfB1yt+zk2FFOREYn+Wyr0iKE91gZpsAmFkLoB9wR3EzmtnJZjbFzKYsXLgwy9WJ5Jlq1aBnz+i9+OefYf78KCr029/CddfB3ntHReMzz4RXXlGTpCIiIvIr5RkIWIZhGcstmNlxQAFRHKgkFwI7AZ2BRsD5yfAbgfPdvdg3Hncf6u4F7l7QtGnTLFYnUgFssQWccgqMGQMLFkTPxV26wH/+A/vvHz0em8Ef/hDTqG6BiIhIlVeegcBsYOuUv1sCc9MnMrNuwEVAb3dfWdJC3X2eh5XAvUQRJIhAYriZfQkcAdxmZn03bBNEKqAmTeCooyK3YOFCGDYsWiOqXRvuvhv69oUWLeCss6JegYiIiFRJ5RkIvA20MbNtzawWMBAYmzqBme0G3EkEAVmV6zezrZJ/DegLfADg7tu6e2t3b01UPP6juz9RVhsjUiEV9lj86KPw44+wcmV0XNa9e/Ry3KkTNGoEf/4zzJ6d69SKiIjIRlRugYC7rwLOIFrw+QgY4e4zzOxSM+udTHYtUBcYmTQF+r9AwcwmASOBg8xstpl1T0Y9bGbvA+8DTYDLy2sbRCqdWrXg4IOj6NC8eXDzzdGT8b//Da1bR+XjBx+MgEFEREQqNfMq3NxgQUGBT5kyJdfJEMm9Tz+Nvgoefxy++ioChj59YMgQ2HPPyDUQERGR9WZmU929INfpSKWehUUEdtwRbrgBvvgiKhOfdBK88AIceig0bgxdu8Jdd8GKFblOqYiIiJQR5QgoR0Aks59/hqeegkmTos+CTz+FzTeH/faD3r2jiNHWW5e8HBEREVGOgIhUILVqQf/+kVPw8ccREHTvDm+8ASeeGP0U7LUXjBihOgUiIiIVUI1cJ0BEKgAz2Gef+P38Mzz2GLz2WrRAdNRRUL9+VDQ+4ogIFjbdNNcpFhERkRKoaJCKBomsv19+geefh1GjoqLxokWw2WZw2GFw+ulR0bhmzVynUkREJOdUNEhEKpeaNaFHj+jB+Jtv4NlnYdAgmDgx6hJstx2ccw689x5U4Y8OIiIi+UiBgIiUjZo1oVu3aIZ01iy4915o3x5uuQU6doTOnaMTs88+U1AgIiKSBxQIiEjZq1cv+iAYNw7mzoXrroMlS+DUU2GHHWDnneHii+G//811SkVERKos1RFQHQGRjcMdPvwQxo+H0aNh8mSoVg223TZaH+rWLToxa9Ag1ykVEREpc/lYR0CBgAIBkdz4/HO4++7oqGzhwhhWu3ZUND7hhOjErE6dnCZRRESkrCgQyDMKBETywOrVUWxo+vRofWjUKFiwIMa1bw/9+sHAgbDTTrlNp4iIyAZQIJBnFAiI5KGVK+G55+D++6Mo0YcfRrGiTTeFnj0jt6BHD6ihblBERKTiUCCQZxQIiFQAc+fCQw9FJ2affBK5B82bR32C3r3hoIPUV4GIiOS9fAwE1GqQiOS35s3hvPOicvH8+REQFBRE86Q9e0KtWlGvYOxY+PHHXKdWRESkwlAgICIVR61aUWdgzJjIGRg+HPr2hXfeiRyCOnXgN7+BSy6BadNynVoREZG8pqJBKhokUvH98gs8/TRMmABvvBEVj92jv4IjjojmSbt2jVaJREREciAfiwYpEFAgIFL5fPtttD40fDi88koEBZttBvvuGy0Q9e2r/gpERGSjUiCQZxQIiFQB33wDL74YHZk9+ODa4VttBaedBkceqaZJRUSk3CkQyDMKBESqmO++gxkzIih45RV4/fUYvs8+cPTRcOCBUcfALLfpFBGRSicfAwE1xC0iVUfjxrDffvGD6N145Mjos+D002NYq1aRS3DwwREgbLZZ7tIrIiJSjpQjoBwBEXGHzz5bW3zonXeix+Pq1SNo6NUrOjJr2DDXKRURkQoqH3MEFAgoEBCRdIsXR+/GkybB889H78Y1a0bRoeOOg/79o6lSERGRLCkQyDMKBEQkK6+/Dk88EcWIvvwS6teHQYNgyBD47W9Vp0BEREqUj4GAOhQTESnJXnvBNddE8aFnn4U99oC77oLOnaFZMzj/fPjkk1ynUkREpFQUCIiIZKtaNejWDZ55BubPh9tug913h+uuiyZI27eHU06BiRNh6dJcp1ZERKRYCgRERNZHw4bRD8FTT8GsWXDjjVC3LgwdCj16QNOm0KUL3HMP/PBDrlMrIiLyK6ojoDoCIlKWPv8c3noLJk+OYkQffhgBwqGHwkEHQe/eUZxIRESqlCpXR8DMepjZJ2Y208wuyDD+bDP70Mymm9nzZrZNyrgJZrbEzJ5Km+c+M/vCzN5Nfh2T4ccmy5luZq+bWYfy3DYRkYy22w4GDowcgg8+gJdfjpf/Z56Bk0+GLbeEvfeG++6Dr7/OdWpFRKQKK7dAwMyqA7cCPYG2wNFm1jZtsmlAgbu3B0YB16SMuxYYVMTiz3X3jsnv3WTYF8D+ybIuA4aW0aaIiKwfs+iH4OGHo1fj996Dyy+H2bOjX4JWrWCHHeCww2DsWPjll1ynWEREqpDyzBHYHZjp7p+7+8/AcKBP6gTu/qK7FxaenQy0TBn3PLAs25W5++vuvjjTskREcs4sKhNfdBF88QVMnw5XXgmbbALjxkGfPhEYnH8+fPpprlMrIiJVQHkGAi2A1Hzv2cmwopwIjM9y2VckRYBuMLNNSrMsMzvZzKaY2ZSFCxdmuToRkTJUrRrsuitceGEUH/r+exgzJlog+te/4De/iVaILrsM5szJdWpFRKSSKs9AIFMPOxlrJpvZcUABURyoJBcCOwGdgUbA+WnLOoAIBM7/9azg7kPdvcDdC5o2bZrF6kREypEZ1KsX9QjGjIl6A1dfDQ0awN//HrkE++4Ll14K//1vrlMrIiKVSHkGArOBrVP+bgnMTZ/IzLoBFwG93X1lSQt193keVgL3EkWQCpfVHvgP0Mfdv9vA9IuIbHxbbQXnnQdvvgkzZ0auwU8/wSWXwI47RstDd94ZuQgiIiIboDwDgbeBNma2rZnVAgYCY1MnMLPdgDuJIGBBNgs1s62Sfw3oC3yQ/N0KeAwY5O4qYCsiFd/220fl4rffjqDg/POjqNCpp0KLFnDUUdGp2YKsbp8iIiLryCoQMLMHsxmWyt1XAWcAE4GPgBHuPsPMLjWz3slk1wJ1gZFJU6D/CxTMbBIwEjjIzGabWfdk1MNm9j7wPtAEuDwZ/negMXBbsix1ECAilcd228E//wkffRT9FBx+eHRmdvrp0S9BvXrw17/GeBERkSxk1aGYmb3j7p1S/q4OvO/u6c2BVijqUExEKrSlS6Pn4ilT4MknYVnS0Fr37jB4cLREVKdObtMoIiJABexQzMwuNLNlQHsz+z75LQMWAGM2SgpFRCSzBg3gz3+Ofgq+/z6aJb3kksgVOOYY2Hxz6N8fJk6ENWtynVoREckz2eYIXOXuF26E9GxUyhEQkUppzZro0Xjs2AgSFi6MHo0HDIAjjoB99onWikREZKOpcDkCKZ4ys80gmvo0s+vNbJtyTJeIiKyvatXggAPghhuiOdLhw2HnneGmm6Kn4223jf4Kli7NdUpFRCSHsg0Ebgd+MLMOwHnAV8AD5ZYqEREpG5tsEq0LvfBC1CG4447IHfjLX6BlSzjtNJg8GbLIHRYRkcol20BglUcZoj7Av93930C98kuWiIiUubp14ZRT4sV/6lTo1y8Cgy5dYLfd4v9LluQ6lSIispFkGwgsM7MLgUHAuKTVoJrllywRESlXnTrBAw/AN99EEaJlyyJ3YPPNoX17GDIE7r4bFi/OdUpFRKScZBsIHAWsBH7v7t8ALYg+AEREpCJr1gz+9Cf49FN48UU4+mhYtAjuvx/+8IcoRtSnT9QzWLEi16kVEZEylFWrQQBm1gzonPz5VrY9AecztRokIpKBe+QUzJkDw4ZFEDB3Lmy2GfTuHcFC9+5Qq1auUyoiUmFU2FaDzGwA8BZwJDAAeNPMjijPhImISI6YwVZbQUFBtC40a1bkFhx7bPRJ0Lt35BSccAK88YYqGouIVFDZ9iPwHnBwYS6AmTUFnnP3DuWcvnKlHAERkVL6+Wd49tnIKRg5Mv5u2hTOPRdOPBEaNcp1CkVE8lKFzREAqqUVBfquFPOKiEhlUasWHHooPPQQfPtt5BiYwXnnRS5Cjx5Rv0B9FIiI5L1sX+YnmNlEMxtiZkOAccDT5ZcsERHJe/Xqwdlnw/z58OabcMYZUel4yBDYYgvo1StaJlq+PNcpFRGRDIotGmRmOwDN3P01M+sP7AMYsBh42N0/2zjJLB8qGiQiUsbWrIG33opiQ6NGRf0CgJ12gm7dIkjYbbfo/VhEpArJx6JBJQUCTwF/dffpacMLgH+4e69yTl+5UiAgIlKO3OH11+Guu2DKlMgt+OUX2HprGDAgihh17RpFi0REKrmKGAh84O67FDHufXfftdxSthEoEBAR2YgWLoTx4+HRR6PC8S+/wHbbwWGHRZOku+0Gm2yS61SKiJSLfAwESsqbrV3MuE3LMiEiIlLJNW0Kxx8P48at7bSsbVu44w7o0gVatYK//x0++EBNkoqIbAQlBQJvm9lJ6QPN7ERgavkkSUREKr26dSMoePLJ6Kxs+HDo0AGuuAJ23RXatYNLLoGXX4avv1ZgICJSDkoqGtQMeBz4mbUv/gVALaCfu39T7iksRyoaJCKSZ+bPh8cei+JDr7yyNgDYdVcYNCiCh2bNcptGEZH1kI9Fg7LtUOwAoLCuwAx3f6FcU7WRKBAQEcljc+bA9OlRVGj4cHjnHahdG/bcE447Do44Aho0yHUqRUSyUmEDgcpKgYCISAXy4Ydw++3w/PPw0UcxbI89oH9/aN8eDj4YqlfPbRpFRIqgQCDPKBAQEamA3OG112DMGHjuOXj33Ri+ww5RdKhfv6hjoGZJRSSPKBDIMwoEREQqgc8/hzfegKFDo14BwLbbRk7Bn/8MLVrkNn0iIuRnIKCuHUVEpGLbbjs49thoYWj27Cg+tP32cOON0XlZ167RROnChblOqYhIXlEgICIilUeLFnDqqdFh2aefwj/+ES0RnXYabLUVdO8eOQeLFuU6pSIiOaeiQSoaJCJSubnD++9Hy0PDhsGXX0al4r33hh49olfj1q1znUoRqeTysWiQAgEFAiIiVceqVVGfYOLE6Mxs+vQYXlAAhx4KZ54JjRvnNo0iUikpEMgzCgRERKq4zz+PDsxuvTVyCgC22QaOPBL69o0+C9QkqYiUgXwMBMq1joCZ9TCzT8xsppldkGH82Wb2oZlNN7PnzWyblHETzGyJmT2VNs99ZvaFmb2b/Domw83MbkrWNd3MOpXntomISCWw3Xbwl79EQDBxYtQvqFUL/v1v2GcfaNkSzjknOjUTEalkyi0QMLPqwK1AT6AtcLSZtU2bbBpQ4O7tgVHANSnjrgUGFbH4c929Y/JLGpCmJ9Am+Z0M3F42WyIiIpWeGfzud9Hi0KefRgtDw4ZFjsBNN8Guu0Y9gqOOgnHjYObMXKdYRGSDlWeOwO7ATHf/3N1/BoYDfVIncPcX3f2H5M/JQMuUcc8Dy0qxvj7AAx4mAw3NbKsN2gIREamaGjSAgQPh8cdh7ly44QaoWRNGjIDDDoM2bSJ46NEDJkyIugciIhVMeQYCLYCvU/6enQwryonA+CyXfUVS/OcGM9ukNOszs5PNbIqZTVmoNqVFRKQkTZvCn/4E//0vfPVV1Cm48EJo1QpefBF69oz+Cs45B957L9epFRHJWnkGApn6ds9YM9nMjgMKiOJAJbkQ2AnoDDQCzi/N+tx9qLsXuHtB06ZNs1idiIhIolUr6NcPrrwygoLvv4fRo6MI0c03Q8eO0L49XHttdG62ZEmuUywiUqTyDARmA1un/N0SmJs+kZl1Ay4Cerv7ypIW6u7zkuI/K4F7iSJIWa9PRESkzGyyCfTvH0WI5s2L1oc22wzOOy9yCTbfHPbbL3o2/vbbXKdWRGQd5RkIvA20MbNtzawWMBAYmzqBme0G3EkEAQuyWWhhuX8zM6AvUNiUw1jg+KT1oD2Bpe4+r2w2RUREpASNG8Mf/xj9FHzyCZx7buQgfPtt9Gy85ZbRs/G998J33+U6tSIi5duPgJkdAtwIVAfucfcrzOxSYIq7jzWz54BdgcIX9lnu3juZdxJRBKgu8B1wortPNLMXgKZEUaB3gVPdfXkSGNwC9AB+AE5w92I7CVA/AiIiUu7co+Oy4cPhkUdg1iyoVg06dIDjjoMjjoAWLdRfgUgll4/9CKhDMQUCIiKysaxeDZMmwahR8Pbb8NZbMXyLLeD3v4cDD4SDDopAQUQqFQUCeUaBgIiI5NSHH0b9gZdfjlyDQnvuCYceCocfDjvvnLv0iUiZycdAQJ8cREREcqVt2+iw7L33YNGi6MSsWzdYvhwuvjjG77033HcfrFiR69SKSCWjQEBERCQfbL55dGL27LPw/vvw2Wdw3XVRsfiEE6Iy8h57xLDPPst1akWkElDRIBUNEhGRfOYOr74Kd90FY8fC0qUxvH376NOgX7/4v2XqTkdE8oWKBomIiEjpmMG++8IDD0QHZV98AddfDw0awKWXRidmO+wAl18O33yT69SKSAWiHAHlCIiISEU1f37kEtxzD0yeHEFDp07Qqxfss08UJapbN9epFBHyM0dAgYACARERqejc4YMP4LHHYPToqGMAERh06RIVkIcMgW23zWkyRaoyBQJ5RoGAiIhUOmvWwJtvRm7BO+/AU0/BtGlQsyb07RtBwdFHQ716uU6pSJWiQCDPKBAQEZEqYepU+M9/IsdgwYIoLtS5MxxyCJx0UtQ3EJFypUAgzygQEBGRKsU9cgvuvBMefzxaIKpVKyob9+4dlZL32COaKhWRMpWPgYBaDRIREakqzKLX4nvvjRaIpk6FwYPj/9dcE70ZN2kSxYeGD1/bVKmIVEoKBERERKqqTp1g6FCYMyd6M37iiSgq9MknUY+gYUNo0QLOOAOmTIkcBRGpNFQ0SEWDRERE1rVmDbz4Yrz8v/oqPP10DGvXDgYMgNNPV/EhkVLKx6JBCgQUCIiIiBRv6VJ45JGocPzOO1C9OvToAV27RtGiRo1imIgUKR8DARUNEhERkeI1aACnnRZ1Ct5/H049Nf4991zYYgto3hzOOQemT891SkWkFJQjoBwBERGR9TN9Ojz8MHz8MYwfD7/8Ei0Qde0K/frBwQdH/wUikpc5AgoEFAiIiIhsuG+/jZaGxo6FF16A1aujyFC/ftFfQbduUL9+rlMpkjMKBPKMAgEREZFy8OOP8OyzMHIkjBkDy5ZF5eKTT47Kxh075jqFIhtdPgYCqiMgIiIiZWvTTaODsgcfjJ6Mx42D3XePvgp22w223x7OOgueeQZWrcp1akWqLAUCIiIiUn5q146iQU8/DQsXwi23RD2Ce+6B7t2jA7Ozz4bXX1c/BSIbmQIBERER2Tg23zz6IJg4MeoUjB4NBx0EN90Ee+8drQ+dcoqCApGNRHUEVEdAREQkt5YujV6Nn346ihGtWAHt20d9AjPo0yc6MxOpwPKxjoACAQUCIiIi+WP5chg2DG6/HaZNWzu8USPYZ5/ow6B1a/jNb6CaCjZIxaFAIM8oEBAREcljy5bBlCnRednTT8Nbb8HixTFuyy2jjkGnTtCzJ7Rpk9u0ipRAgUCeUSAgIiJSgSxbFvUHHnssWiMaMybqElSrBr/7XQQGAwZEXQORPKNAIM8oEBAREanAvv8+cgxGjYp+C2bOhBo1ounSLl2gQwc44IAYJpJj+RgI6MoQERGRiql+fTjwwPgB/Pe/Ubdg2LDINQBo1gwOPxyOOAL231/1CkRSlOvVYGY9zOwTM5tpZhdkGH+2mX1oZtPN7Hkz2yZl3AQzW2JmTxWx7JvNbHnK363M7EUzm5Ys75Dy2SoRERHJS23awPXXw5w58OKLcPPN0Lkz3HZbBAvbbgt//zt89lmuUyqSF8otEDCz6sCtQE+gLXC0mbVNm2waUODu7YFRwDUp464FBhWx7AKgYdrgvwEj3H03YCBw2wZvhIiIiFQ81apB165wxhnw5JPRZ8GwYbDzznD55dGh2X77wZVXwiuvqM8CqbLKM0dgd2Cmu3/u7j8Dw4E+qRO4+4vu/kPy52SgZcq454Fl6QtNAoxrgfPSRjlQP/l/A2BuWWyEiIiIVHCNG8PAgTBhAsyaFQHA/Plw0UVRXKhdO7jkkhi/YkWuUyuy0ZRnINAC+Drl79nJsKKcCIzPYrlnAGPdfV7a8EuA48xsNvA0cGammc3sZDObYmZTFi5cmMXqREREpNJo2RIuvBA+/hg++giGDoWmTeHSS6MZ0i23hOOPjzoGK1fmOrUi5ao8KwtbhmEZ897M7DigANi/2AWaNQeOBLpmGH00cJ+7/8vMugAPmtku7r5mnQS4DwWGQrQaVNJGiIiISCVkBjvtFL+TToKFC+Pl/4UXYMQIePDBqIzcuzd07Ag77ggHHQR16uQ65SJlpjwDgdnA1il/tyRDcR0z6wZcBOzv7iWF3rsBOwAzzQygjpnNdPcdiByFHgDu/oaZ1QaaAAs2dENERESkkmvaFE45JX6rVsHzz8P990dg8NBDMU2tWnDYYXDkkdESUc2auU2zyAYqz0DgbaCNmW0LzCEq8B6TOoGZ7QbcCfRw9xJf2N19HLBlyvzLkyAAYBZwEHCfme0M1AZU9kdERERKp0aN6Jyse/f4e+rUaIXo889h+PDIOWjWDPr2jd/BB0P16rlNs8h6KNcOxZImPG8EqgP3uPsVZnYpMMXdx5rZc8CuQGF5/1nu3juZdxKwE1AX+A440d0npi1/ubvXTf7fFrgrmd6B89z9meLSpw7FREREpFR+/DF6NB49GsaPX1u5+JBD1vZXUL9+8cuQKikfOxRTz8IKBERERGR9/PgjPPUU3HorvP46/PILbLYZtGgBhx4K/fvD3ntHfQSp8vIxEFD3eiIiIiLrY9NNo77ASy9FC0NvvAHHHBMdmt1wA+y7bzRNev750UKRSJ5RICAiIiKyocxgzz2jOdLly2HpUrjvPmjUCK69Ftq2hbp14cQT4dFHYfXqXKdYRIGAiIiISJmrXx8GD4ZXX4UvvohgoF07GDkyOjdr0QLOPBOmTct1SqUKUx0B1REQERGRjeWnn+Dpp2HYMHjyyShS1L499OoFAwbE/6VSUh0BERERkaqsdu2oRDxyJMybFxWN69SBf/4TOnSIDs7++ld4802owh9rZeNQICAiIiKSC5tvDn/8Y1Qy/uYb+Pe/o0jRVVdFfYNOnaJI0ddf5zqlUkmpaJCKBomIiEg+mTMHRo2KHo2nTImKyPvvD7vuGkWHDj0Uttoq16mUUsrHokEKBBQIiIiISL765BN48MGoTzB9egyrXh169Ih6BYcdFhWPJe8pEMgzCgRERESkwli1KoKBESPgkUeiyFD16tC5c9Q7aNUKunWDxo1znVLJQIFAnlEgICIiIhWSe+QW3H03TJgAH3wQw82gSxc4+GA45BAoKIBqqhKaDxQI5BkFAiIiIlIpfP45TJwYlY5HjYqejN2j2FCfPtC3b9QzqFUr1ymtshQI5BkFAiIiIlIpLVoE48bBE09EjsEPP0RQMGhQdGjWvn3kHshGk4+BgPKKRERERCqbRo3ipX/0aFi4EB57LF7+//lP6NgRdtst/v/RR7lOqeSQAgERERGRyqxOHejXL3o0/uqr6K/AHS68ENq2jcDgssuinkEVLilSFalokIoGiYiISFX00UfRLOkTT0SnZgBt2sDhh8Nxx0WQoOJDZSYfiwYpEFAgICIiIlXdvHkRFIweDc89B2vWQO3a0VdBt27xrzox2yAKBPKMAgERERGRNJ99Bs88A2PGwLvvwvz5Mbx9ezjmGDj66AgKatbMbTorGAUCeUaBgIiIiEgx3GHGDHj88fhNm7Z23L77wgknwIABsNlmuUtjBZGPgYAqC4uIiIhIZmawyy5w8cXwzjuRW3DuubDJJjB7Nvz+99C8OfzpT3DffdHbsVQYyhFQjoCIiIhI6a1aBS+8EAHAiBGwenUM32svOP106N0b6tbNaRLzST7mCCgQUCAgIiIismEWLICnnoL33oPhw+PvGjXg4IPhyCOjJaL69XOdypxSIJBnFAiIiIiIlLE1a2DSpOi34HxS708AAAssSURBVKGHYO7cCAp69oxcgkGDomhRFZOPgYDqCIiIiIhI2alWDfbfH66+Gr78Eh59NCoVT50KJ50EjRvD8cfD22/nOqVVngIBERERESkfNWtGq0JDh0bl4meegQMOgEcegd13j4rI118fAYNsdAoERERERKT8mUWdgSefhK++gquuggYN4JxzYNttYeedo9jQmDHw44+5Tm2VoDoCqiMgIiIikjvvvgvjx8OwYfD++2uH77ln/AYOjNwDs9ylsQzkYx0BBQIKBERERERyzx1WrIgcgddei7oFixbFuF12iSJGvXpBhw4VMihQIJBnFAiIiIiI5KlffoGlS2HkyKhT8OqrMXzXXeG44+Cww6I4UQUJCvIxECjXOgJm1sPMPjGzmWZ2QYbxZ5vZh2Y23cyeN7NtUsZNMLMlZvZUEcu+2cyWpw0bkCxvhpk9UvZbJCIiIiIbRc2a0KQJnHZaNEc6Zw7cfjtsuimcfz60awft28MNN6zNOZBSKbdAwMyqA7cCPYG2wNFm1jZtsmlAgbu3B0YB16SMuxYYVMSyC4CGacPaABcCe7t7O+BPZbEdIiIiIpIHmjeHU0+FN9+Ejz+Gm2+GOnXg7LNhiy2iovGIEVG8SLJSnjkCuwMz3f1zd/8ZGA70SZ3A3V909x+SPycDLVPGPQ/8//buPtauqszj+PdHi4JiqAMVlRJK0lbUSSiKFWXGEIZgdQw6RAPqaDPTDGqsVaMiviRmmPkDo1EZgkaCBJgwMgzMSHUcO0RhMBAKlZdiiw1FfKlFWqQiSERbH//Y6zLH6729oL3n3N79/SQn56y1195n7Xue3LOfs9fa+5HxG20JxqeAs8Yt+gfggqra2dbfvrd2RJIkSTPIC14Aq1Z1ScG6dd38ga9+FU4/vbuD8WmnwWWXwY4do+7pjDadicDhwI8Hyltb3WRWAv/zJLa7ClhTVfePq18CLElyY5KbkyyfaOUkZyZZn2T9DoNDkiRp37ZsWTeH4MEH4frru7MGN90EK1bAYYd19y04/3y4995uQrKeMJ2JwEQzNyb86yf5W+A4ul/6J99g8nzgTcD5EyyeCywGTgTeDFyUZN74RlV1YVUdV1XHzZ8/f487IEmSpH3E3LndHY0vuAC2bYP16+HjH4cHHoDVq2HRom5ewT33jLqnM8Z0JgJbgSMGyguAbeMbJTkZ+BhwalU9PsU2jwUWAVuS/AB4RpItA+93TVX9pqruAzbTJQaSJEnqk/32g5e+FM45BzZtgs2b4bzzYOFCOPLIKVfvi7nTuO1bgcVJjgJ+ApwBvGWwQZJjgS8Cy5/MmP6q+m/guQPrP1pVi1rxK3RnAi5JcijdUKHv740dkSRJ0j5syZLusXr1qHsyo0xbIlBVu5KsAtYCc4CLq2pjknOA9VW1hm4o0EHAf6S7BuyPqupUgCTfBo4GDkqyFVhZVWv38JZrgVOSbAJ2Ax+qqp9N1/5JkiRJ+zJvKOYNxSRJkjTNendDMUmSJEkzk4mAJEmS1EMmApIkSVIPmQhIkiRJPWQiIEmSJPWQiYAkSZLUQ72+fGiSHcAPR/T2hwIPjui9tW8wRjQVY0R7YnxoKsbIcB1ZVfNH3YlBvU4ERinJ+pl2LVnNLMaIpmKMaE+MD03FGJFDgyRJkqQeMhGQJEmSeshEYHQuHHUHNOMZI5qKMaI9MT40FWOk55wjIEmSJPWQZwQkSZKkHjIRkCRJknrIRGDIkixPsjnJliRnj7o/Gp4kFyfZnuS7A3V/luTaJPe052e3+iT5lxYnG5K8ZGCdFa39PUlWjGJfND2SHJHkuiR3J9mY5L2t3jgRAEkOSHJLkjtbjPxjqz8qybr2ef97kqe1+qe38pa2fOHAtj7S6jcnefVo9kjTIcmcJLcn+VorGx+akInAECWZA1wAvAZ4EfDmJC8aba80RJcAy8fVnQ18s6oWA99sZehiZHF7nAl8AboDQuATwMuBZcAnxg4KNSvsAj5QVS8Ejgfe3f5HGCca8zhwUlUdAywFlic5Hvgk8NkWIzuBla39SmBnVS0CPtva0eLqDODFdP+XPt++ozQ7vBe4e6BsfGhCJgLDtQzYUlXfr6pfA1cArx9xnzQkVXUD8NC46tcDl7bXlwJvGKi/rDo3A/OSPA94NXBtVT1UVTuBa/nD5EL7qKq6v6pua68fofsiPxzjRE37rB9txf3bo4CTgKta/fgYGYudq4C/SpJWf0VVPV5V9wFb6L6jtI9LsgD4a+CiVg7GhyZhIjBchwM/HihvbXXqr8Oq6n7oDgKB57T6yWLFGOqJdor+WGAdxokGtGEfdwDb6ZK8e4GfV9Wu1mTw834iFtryh4FDMEZms88BZwG/beVDMD40CROB4coEdV6/VROZLFaMoR5IchBwNfC+qvrFnppOUGeczHJVtbuqlgIL6H6lfeFEzdqzMdIjSV4HbK+q7wxWT9DU+BBgIjBsW4EjBsoLgG0j6otmhgfaUA7a8/ZWP1msGEOzXJL96ZKAy6vqP1u1caI/UFU/B66nm08yL8nctmjw834iFtryg+mGKBojs9MJwKlJfkA3/PgkujMExocmZCIwXLcCi9vs/afRTcRZM+I+abTWAGNXdFkBXDNQ//Z2VZjjgYfbkJC1wClJnt0mf57S6jQLtLG5XwLurqrPDCwyTgRAkvlJ5rXXBwIn080luQ54Y2s2PkbGYueNwLequ5PoGuCMdtWYo+gmnN8ynL3QdKmqj1TVgqpaSHeM8a2qeivGhyYxd+om2luqaleSVXRfyHOAi6tq44i7pSFJ8mXgRODQJFvprupyLnBlkpXAj4A3teZfB15LN0HrMeDvAKrqoST/RJdUApxTVeMnIGvfdQLwNuCuNgYc4KMYJ/p/zwMubVdw2Q+4sqq+lmQTcEWSfwZup0soac//mmQL3S+9ZwBU1cYkVwKb6K5W9e6q2j3kfdHwfBjjQxNIl/hJkiRJ6hOHBkmSJEk9ZCIgSZIk9ZCJgCRJktRDJgKSJElSD5kISJIkST1kIiBJs1CSR9vzwiRv2cvb/ui48k17c/uSpOEwEZCk2W0h8JQSgXaN+j35vUSgql75FPskSZoBTAQkaXY7F/jLJHckeX+SOUk+leTWJBuSvAMgyYlJrkvyb8Bdre4rSb6TZGOSM1vducCBbXuXt7qxsw9p2/5ukruSnD6w7euTXJXke0kub3dRJsm5STa1vnx66H8dSeox7ywsSbPb2cAHq+p1AO2A/uGqelmSpwM3Jvnf1nYZ8OdVdV8r/327S/GBwK1Jrq6qs5OsqqqlE7zXacBS4Bjg0LbODW3ZscCLgW3AjcAJ7W64fwMcXVWVZN5e33tJ0qQ8IyBJ/XIK8PYkdwDrgEOAxW3ZLQNJAMDqJHcCNwNHDLSbzF8AX66q3VX1APB/wMsGtr21qn4L3EE3ZOkXwK+Ai5KcBjz2J++dJOlJMxGQpH4J8J6qWtoeR1XV2BmBXz7RKDkROBl4RVUdA9wOHPAktj2Zxwde7wbmVtUuurMQVwNvAL7xlPZEkvQnMRGQpNntEeBZA+W1wLuS7A+QZEmSZ06w3sHAzqp6LMnRwPEDy34ztv44NwCnt3kI84FXAbdM1rEkBwEHV9XXgffRDSuSJA2JcwQkaXbbAOxqQ3wuAc6jG5ZzW5uwu4Pu1/jxvgG8M8kGYDPd8KAxFwIbktxWVW8dqP8v4BXAnUABZ1XVT1siMZFnAdckOYDubML7/7hdlCT9MVJVo+6DJEmSpCFzaJAkSZLUQyYCkiRJUg+ZCEiSJEk9ZCIgSZIk9ZCJgCRJktRDJgKSJElSD5kISJIkST30Ox80F8TXtKbHAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "runExpe(scaled_data, theta, 16, STOP_GRAD, thresh=0.002*2, alpha=0.001)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.703000",
     "start_time": "2016-09-12T22:42:59.699000"
    }
   },
   "outputs": [],
   "source": [
    "#设定阈值\n",
    "def predict(X, theta):\n",
    "    return [1 if x >= 0.5 else 0 for x in model(X, theta)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2016-09-12T22:42:59.760000",
     "start_time": "2016-09-12T22:42:59.706000"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "accuracy = 89%\n"
     ]
    }
   ],
   "source": [
    "scaled_X = scaled_data[:, :3]\n",
    "y = scaled_data[:, 3]\n",
    "predictions = predict(scaled_X, theta)\n",
    "correct = [1 if ((a == 1 and b == 1) or (a == 0 and b == 0)) else 0 for (a, b) in zip(predictions, y)]\n",
    "accuracy = (sum(map(int, correct)) % len(correct))\n",
    "print ('accuracy = {0}%'.format(accuracy))"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "nav_menu": {},
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": true
  },
  "toc_position": {
   "height": "691px",
   "left": "0px",
   "right": "893.9px",
   "top": "32px",
   "width": "322px"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
